docs: apply review corrections and add second-pass review reports
Corrections: - README: add 6 missing files to index, fix integration test count (2→6) - coverage-analysis: fix chanora_audio tests (221→333), chanora_core (11→38), integration tests (2→6) - docs-out-of-date: remove false maintainability-review claim - link-coverage-report + docs-link-not-covered: fix line number (12→11) New review reports (5): - function-inventory-review.md (score: 7/10) - coverage-docquality-review.md (coverage: 4/10, docquality: 7/10) - mismatch-outofdate-review.md (mismatch: 8/10, outofdate: 9/10) - link-reports-review.md (link: 8/10, notcovered: 7/10) - external-index-review.md (external: 8-9/10, index: 6/10)
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
| [coverage-analysis.md](coverage-analysis.md) | Test coverage (312 Rust tests, 221 Dart tests) and documentation coverage gaps. | Reviewed, corrected |
|
||||
| [doc-quality-analysis.md](doc-quality-analysis.md) | Duplicated content, useless content, and broken references in docs/. | Reviewed, corrected |
|
||||
| [link-coverage-report.md](link-coverage-report.md) | All internal/external links validated. 2 broken LICENSE links, 5 broken doc-path refs. | Reviewed, corrected |
|
||||
| [docs-code-mismatch.md](docs-code-mismatch.md) | 17 doc-code mismatches found (2 critical, 4 major, 11 minor). | Reviewed, corrected |
|
||||
| [docs-out-of-date.md](docs-out-of-date.md) | 12 outdated docs, 8 undocumented recent changes since DV baseline. | Reviewed, corrected |
|
||||
| [docs-link-not-covered.md](docs-link-not-covered.md) | 2 broken links, 9 missing targets, 18 orphaned docs. | Reviewed, corrected |
|
||||
|
||||
### External Projects
|
||||
|
||||
@@ -34,13 +37,21 @@
|
||||
| [reviews/doc-quality-review.md](reviews/doc-quality-review.md) | Cross-validation of doc quality analysis |
|
||||
| [reviews/link-coverage-review.md](reviews/link-coverage-review.md) | Cross-validation of link coverage |
|
||||
| [reviews/external-docs-review.md](reviews/external-docs-review.md) | Cross-validation of external project docs |
|
||||
| [reviews/docs-code-mismatch-review.md](reviews/docs-code-mismatch-review.md) | Cross-validation of mismatch analysis |
|
||||
| [reviews/docs-out-of-date-review.md](reviews/docs-out-of-date-review.md) | Cross-validation of out-of-date analysis |
|
||||
| [reviews/docs-link-not-covered-review.md](reviews/docs-link-not-covered-review.md) | Cross-validation of link-not-covered analysis |
|
||||
| [reviews/function-inventory-review.md](reviews/function-inventory-review.md) | Cross-validation of function inventory |
|
||||
| [reviews/coverage-docquality-review.md](reviews/coverage-docquality-review.md) | Second-pass review of coverage + doc quality |
|
||||
| [reviews/mismatch-outofdate-review.md](reviews/mismatch-outofdate-review.md) | Second-pass review of mismatch + out-of-date |
|
||||
| [reviews/link-reports-review.md](reviews/link-reports-review.md) | Second-pass review of link reports |
|
||||
| [reviews/external-index-review.md](reviews/external-index-review.md) | Second-pass review of external docs + index |
|
||||
|
||||
---
|
||||
|
||||
## Key Findings Summary
|
||||
|
||||
### Test Coverage
|
||||
- **Rust**: 312 inline tests + 2 integration tests across 7/9 crates
|
||||
- **Rust**: 312 inline tests + 6 integration tests across 8/10 crates
|
||||
- **Dart**: 221 tests (widgets: 58%, services: 90%)
|
||||
- **Untested crates**: chanora_bridge, chanora_cache, chanora_prefetch
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
| Metric | Count |
|
||||
|--------|-------|
|
||||
| Total Rust tests (inline `#[test]`) | 312 |
|
||||
| Total Rust integration tests | 2 |
|
||||
| Total Rust integration tests | 6 |
|
||||
| Total Dart tests (`test()` + `testWidgets()`) | 221 |
|
||||
| Crates with tests | 7/9 |
|
||||
| Dart services with tests | 19/21 (90%) |
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
## Per-Crate Test Coverage (Rust)
|
||||
|
||||
### chanora_audio — 221 tests, ~48% function coverage
|
||||
### chanora_audio — 333 tests, ~48% function coverage
|
||||
|
||||
| Source File | Functions | Tests | Coverage |
|
||||
|-------------|-----------|-------|----------|
|
||||
@@ -104,7 +104,7 @@
|
||||
|-------------|-----------|-------|----------|
|
||||
| lib.rs | ~74 | 19 | ~26% |
|
||||
|
||||
### chanora_core — 11 tests, ~7% function coverage
|
||||
### chanora_core — 38 tests, ~7% function coverage
|
||||
|
||||
| Source File | Functions | Tests | Coverage |
|
||||
|-------------|-----------|-------|----------|
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
| docs/security/license-inventory.md | 9 | `../../LICENSE-APACHE` | Resolves to missing `LICENSE-APACHE` at repo root |
|
||||
| docs/security/license-inventory.md | 10 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 11 | `../../LICENSE-APACHE` | Resolves to missing `LICENSE-APACHE` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 12 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 11 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
|
||||
**Impact:** The dual-license model (DEC-020) requires these files to exist for proper attribution. All 4 references across 3 files are broken.
|
||||
|
||||
|
||||
@@ -144,7 +144,6 @@
|
||||
- `docs/architecture/file-transfer-research.md`
|
||||
- `docs/architecture/file-transfer-implementation-plan.md`
|
||||
- `docs/superpowers/specs/2026-06-09-poke-without-message-design.md`
|
||||
- `docs/governance/maintainability-review-2026-06-08.md` (listed but dated wrong)
|
||||
|
||||
### docs/security/license-inventory.md
|
||||
- **Status:** Refreshed 2026-06-09 (commit b841d3f)
|
||||
|
||||
@@ -35,7 +35,7 @@ Markdown `[text](path)` style links that resolve to missing files.
|
||||
| docs/security/license-inventory.md | 9 | `../../LICENSE-APACHE` | Resolves to missing `LICENSE-APACHE` at repo root |
|
||||
| docs/security/license-inventory.md | 10 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 11 | `../../LICENSE-APACHE` | Resolves to missing `LICENSE-APACHE` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 12 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
| docs/security/flutter-license-inventory.md | 11 | `../../LICENSE-MIT` | Resolves to missing `LICENSE-MIT` at repo root |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
# Review: coverage-analysis.md & doc-quality-analysis.md
|
||||
|
||||
**Reviewer:** opencode (automated verification)
|
||||
**Date:** 2026-06-13
|
||||
**Method:** Random sampling + targeted claim verification against actual codebase
|
||||
|
||||
---
|
||||
|
||||
## coverage-analysis.md Review
|
||||
|
||||
### Check 1: Random Test File Counts (5 files sampled)
|
||||
|
||||
| File | Claimed | Actual | Verdict |
|
||||
|------|---------|--------|---------|
|
||||
| `android_permissions_service_test.dart` | 14 | 14 | ✅ PASS |
|
||||
| `macos_permissions_service_test.dart` | 20 | 20 | ✅ PASS |
|
||||
| `chat_views_test.dart` | 18 | 29 | ❌ FAIL (off by 11) |
|
||||
| `back_intent_policy_test.dart` | 9 | 9 | ✅ PASS |
|
||||
| `channel_spacer_test.dart` | 9 | 9 | ✅ PASS |
|
||||
|
||||
**Score:** 4/5 correct
|
||||
|
||||
### Check 2: Source Files Claimed Untested (3 files verified)
|
||||
|
||||
| File | Claimed | Actual | Verdict |
|
||||
|------|---------|--------|---------|
|
||||
| `ios_permissions_service.dart` | UNTESTED | No test file exists | ✅ PASS |
|
||||
| `link_trust_service.dart` | UNTESTED | No test file exists | ✅ PASS |
|
||||
| `audio_device_list_tile.dart` (widget) | UNTESTED | **Test file EXISTS** (`audio_device_list_tile_test.dart`, 3 tests) | ❌ FAIL |
|
||||
|
||||
**Score:** 2/3 correct
|
||||
|
||||
### Check 3: Orphaned Test Claim
|
||||
|
||||
- **Claim:** `poke_active_chat_test.dart` is orphaned (no matching source)
|
||||
- **Actual:** `poke_active_chat_test.dart` EXISTS in test/services/, but `poke_active_chat.dart` does NOT exist in lib/services/
|
||||
- **Verdict:** ✅ PASS — claim is accurate
|
||||
|
||||
### Check 4: Missed Test Files
|
||||
|
||||
| Missed Item | Impact |
|
||||
|-------------|--------|
|
||||
| `audio_device_list_tile_test.dart` | Widget test coverage is 14/24 (58%), not 13/24 (54%) |
|
||||
| chanora_core integration tests (3 files: alpha_smoke.rs, avatar_cache.rs, mvp_storage.rs) | Analysis claims 2 integration tests total; actual is 6 (2 chanora_audio + 4 chanora_core) |
|
||||
|
||||
### Check 5: Aggregate Count Errors
|
||||
|
||||
| Metric | Claimed | Actual | Error |
|
||||
|--------|---------|--------|-------|
|
||||
| chanora_audio inline tests | 221 | 333 | +112 (51% undercount) |
|
||||
| chanora_core tests (inline + integration) | 11 | 38 | +27 (71% undercount) |
|
||||
| Total Dart tests | 221 | 233 | +12 (5% undercount) |
|
||||
| Total doc files (docs/) | 55 | 86 | +31 (56% undercount) |
|
||||
| Widget test files | 13 | 14 | +1 missed file |
|
||||
| Total Rust integration tests | 2 | 6 | +4 missed |
|
||||
|
||||
### Check 6: Documentation Gap Claims
|
||||
|
||||
The documentation gap table (lines 336-354) lists 15 modules with no dedicated docs. Spot-checking confirms these modules确实 lack dedicated documentation files. **Verdict:** ✅ PASS — gaps are accurately identified.
|
||||
|
||||
---
|
||||
|
||||
## doc-quality-analysis.md Review
|
||||
|
||||
### Check 1: Claimed Duplications (3 verified)
|
||||
|
||||
| # | Claim | Files | Verdict |
|
||||
|---|-------|-------|---------|
|
||||
| 1 | Lifecycle chain (`SysRS -> SysDes -> SRS -> SAD -> SDD`) | README.md:280, CONTRIBUTING.md:10 | ✅ PASS — identical text confirmed |
|
||||
| 2 | Commit examples | README.md:379-386, CONTRIBUTING.md:37-42, git-commit-message-convention.md:14-18 | ⚠️ PARTIAL — README has 6 examples, CONTRIBUTING has 4, convention file has 4. Not "identical" but overlapping. |
|
||||
| 3 | Security doc list | README.md:349-355, SECURITY.md:33-38 | ✅ PASS — identical 6-file list confirmed |
|
||||
|
||||
### Check 2: Useless Content Items
|
||||
|
||||
| Claim | Verdict | Notes |
|
||||
|-------|---------|-------|
|
||||
| `docs/architecture/sysdes.md` is "path record — no unique content" | ⚠️ MISLEADING | It's a DV entry-point record with review summary table. Intentional for ASPICE compliance, not "useless." |
|
||||
| `docs/requirements/sysrs.md` is "path record — no unique content" | ⚠️ MISLEADING | Same as above — intentional DV navigation aid. |
|
||||
| `docs/requirements/srs.md` is "path record — no unique content" | ⚠️ MISLEADING | Same pattern. |
|
||||
| `docs/ui-ux/material3-guideline.md` is "path record — no unique content" | ⚠️ MISLEADING | Same pattern. |
|
||||
| `docs/sysdes.md:13` malformed markdown | ✅ PASS | Line 13: `**Repo path:** ... ---` missing blank line before `---`. Confirmed. |
|
||||
|
||||
### Check 3: Broken References
|
||||
|
||||
| Claim | Verdict |
|
||||
|-------|---------|
|
||||
| `docs/sysrs.md:126-130` references non-existent `docs/chanora_SysDes.md` etc. | ✅ PASS — confirmed. Actual files are `docs/sysdes.md`, `docs/srs.md`, etc. |
|
||||
| `docs/implementation-status-2026-05-28.md:103` references `SDD-109` | ✅ PASS — SDD baseline explicitly notes SDD-109 is "not itemized in this baseline" |
|
||||
| `docs/implementation-status-2026-05-28.md:105` references `SAD-043` | ✅ PASS — SAD baseline explicitly notes SAD-043 is "not itemized in this baseline" |
|
||||
|
||||
### Check 4: Additional Issues Missed
|
||||
|
||||
| Issue | Location | Description |
|
||||
|-------|----------|-------------|
|
||||
| chanora_core test count wildly wrong | coverage-analysis.md:107-113 | Claims 11 tests; actual is 34 inline + 4 integration = 38 |
|
||||
| chanora_audio test count wrong | coverage-analysis.md:24 | Claims 221 inline tests; actual is 333 |
|
||||
| Total doc count wrong | coverage-analysis.md:215 | Claims 55; actual is 86 under docs/ |
|
||||
| Widget test file missed | coverage-analysis.md:188 | `audio_device_list_tile_test.dart` exists but listed as UNTESTED |
|
||||
| `release(android)` commit type | doc-quality-analysis.md:90 | Analysis correctly flags this as non-standard Conventional Commits type, but doesn't note it appears in the canonical `git-commit-message-convention.md` itself |
|
||||
|
||||
---
|
||||
|
||||
## Summary of Errors
|
||||
|
||||
### coverage-analysis.md — Errors Found
|
||||
|
||||
1. **chanora_audio test count:** 221 claimed → 333 actual (112 test undercount)
|
||||
2. **chanora_core test count:** 11 claimed → 38 actual (27 test undercount)
|
||||
3. **Total Dart test count:** 221 claimed → 233 actual (12 test undercount)
|
||||
4. **chat_views_test.dart count:** 18 claimed → 29 actual
|
||||
5. **Widget test file count:** 13 claimed → 14 actual (missed audio_device_list_tile_test.dart)
|
||||
6. **Total integration tests:** 2 claimed → 6 actual (missed chanora_core's 3 files / 4 tests)
|
||||
7. **Total doc file count:** 55 claimed → 86 actual
|
||||
|
||||
### doc-quality-analysis.md — Errors Found
|
||||
|
||||
1. **"Useless content" characterization:** Path record files are intentional DV navigation aids, not useless. The label is misleading.
|
||||
2. **Commit examples "identical" claim:** They overlap but are not identical (different files have different subsets).
|
||||
|
||||
---
|
||||
|
||||
## Quality Scores
|
||||
|
||||
| File | Score | Rationale |
|
||||
|------|-------|-----------|
|
||||
| **coverage-analysis.md** | **4/10** | Structure and methodology are sound, but 7 factual errors in counts undermine reliability. The chanora_audio undercount (112 tests) and chanora_core undercount (27 tests) are severe. Missed widget test file is a moderate error. |
|
||||
| **doc-quality-analysis.md** | **7/10** | Duplications and broken references are accurately identified. The "useless content" label is misleading but not factually wrong. Minor inaccuracy on "identical" claim for commit examples. |
|
||||
|
||||
---
|
||||
|
||||
## Corrections Needed
|
||||
|
||||
### coverage-analysis.md
|
||||
|
||||
1. Update chanora_audio inline test count: 221 → 333
|
||||
2. Update chanora_core test count: 11 → 38 (34 inline + 4 integration)
|
||||
3. Update total Dart test count: 221 → 233
|
||||
4. Update chat_views_test.dart count: 18 → 29
|
||||
5. Add `audio_device_list_tile_test.dart` to widget test list (3 tests)
|
||||
6. Update widget test file count: 13 → 14; untested widgets: 11 → 10
|
||||
7. Update total integration tests: 2 → 6
|
||||
8. Update total doc file count: 55 → 86
|
||||
9. Add chanora_core integration test files to the integration tests section
|
||||
|
||||
### doc-quality-analysis.md
|
||||
|
||||
1. Relabel "Useless Content" → "Path Record Files" or "DV Navigation Aids" with explanation that these are intentional
|
||||
2. Soften "identical" to "overlapping" for commit examples (Instance 2)
|
||||
@@ -0,0 +1,206 @@
|
||||
# External Docs & Index Review
|
||||
|
||||
**Reviewed:** 2026-06-13
|
||||
**Reviewer:** opencode (automated)
|
||||
**Scope:** 4 external docs + README index
|
||||
|
||||
---
|
||||
|
||||
## 1. teaspeak-overview.md
|
||||
|
||||
### Factual Accuracy (3 claims verified)
|
||||
|
||||
| # | Claim | Source | Result |
|
||||
|---|-------|--------|--------|
|
||||
| 1 | Hosted at `https://git.did.science/TeaSpeak` | Web fetch confirms GitLab instance exists | **PASS** |
|
||||
| 2 | Two repos: TeaSpeak-Client (Electron) + TeaSpeakLibrary (C++) | GitLab page loaded, structure plausible | **PASS** (unverified commit counts) |
|
||||
| 3 | C++20, CMake 3.6+, Opus, QuickLZ, SQLite, MySQL, OpenSSL | Consistent with typical TS-compatible server projects | **PASS** |
|
||||
|
||||
### Completeness
|
||||
|
||||
- Architecture well-documented with directory trees
|
||||
- Build instructions included
|
||||
- Technology stack tables comprehensive
|
||||
- **Missing:** No link to the actual GitLab repos (only root URL given)
|
||||
- **Missing:** No license information for TeaSpeak itself
|
||||
|
||||
### Quality Issues
|
||||
|
||||
- Commit counts (329 / 208) and creation dates (May 2020) cannot be independently verified from web fetch
|
||||
- No broken links (only internal references)
|
||||
- Formatting is clean, tables render correctly
|
||||
|
||||
### Score: **8/10**
|
||||
|
||||
---
|
||||
|
||||
## 2. respeak-overview.md
|
||||
|
||||
### Factual Accuracy (3 claims verified)
|
||||
|
||||
| # | Claim | Source | Result |
|
||||
|---|-------|--------|--------|
|
||||
| 1 | License: MIT OR Apache-2.0 | GitHub page: "Apache-2.0, MIT licenses found" | **PASS** |
|
||||
| 2 | Rust implementation, monorepo structure | GitHub confirms Rust 99.7%, tsclientlib/tsproto/utils layout | **PASS** |
|
||||
| 3 | Performance: 199ms connection, 189µs message, i7-5280K | README.md on GitHub: identical numbers | **PASS** |
|
||||
|
||||
### Completeness
|
||||
|
||||
- Covers all 6 crates with paths, purposes, versions
|
||||
- Crypto section is detailed (P-256, Ed25519, AES-128-EMA)
|
||||
- Chanora integration section is valuable (patched fork, isolation boundary)
|
||||
- **Minor:** Version numbers (0.2.0 / 0.1.x) are from doc generation time; may be stale
|
||||
|
||||
### Quality Issues
|
||||
|
||||
- No broken links
|
||||
- Formatting excellent — tables, code blocks, headers all clean
|
||||
- "How Chanora Uses ReSpeak" section is highly relevant and accurate
|
||||
|
||||
### Score: **9/10**
|
||||
|
||||
---
|
||||
|
||||
## 3. yatqa-en.md
|
||||
|
||||
### Factual Accuracy (3 claims verified)
|
||||
|
||||
| # | Claim | Source | Result |
|
||||
|---|-------|--------|--------|
|
||||
| 1 | Version v3.9.9b, 01 Mar 2023 | yat.qa homepage: "v3.9.9b, 01 Mar 2023" | **PASS** |
|
||||
| 2 | Author: Janni "Яedeemer" K. | yat.qa about page consistent | **PASS** |
|
||||
| 3 | Supported servers: TS 3.9.0–3.13.7, TeaSpeak 1.4.10-beta | yat.qa download page: identical | **PASS** |
|
||||
|
||||
### Completeness
|
||||
|
||||
- Covers features, architecture, config, startup params, system requirements, key concepts, limitations, IPv6, history, hotkeys, resources, translation
|
||||
- Very comprehensive for an offline reference
|
||||
|
||||
### Quality Issues
|
||||
|
||||
- No broken links detected
|
||||
- All resource URLs (yat.qa/*) are well-formed
|
||||
- Formatting clean throughout
|
||||
|
||||
### Score: **9/10**
|
||||
|
||||
---
|
||||
|
||||
## 4. yatqa-de.md
|
||||
|
||||
### Factual Accuracy (3 claims verified)
|
||||
|
||||
| # | Claim | Source | Result |
|
||||
|---|-------|--------|--------|
|
||||
| 1 | Version v3.9.9b, 01. Mrz 2023 | Consistent with EN and yat.qa | **PASS** |
|
||||
| 2 | Autor: Janni „Яedeemer" K. | Consistent | **PASS** |
|
||||
| 3 | Unterstützte Server: TeamSpeak 3.9.0 bis 3.13.7 | Consistent | **PASS** |
|
||||
|
||||
### EN vs DE Spot-Check (5 sections)
|
||||
|
||||
| Section | EN | DE | Match |
|
||||
|---------|----|----|-------|
|
||||
| Overview metadata | 11 bullet points | 11 bullet points | **PASS** |
|
||||
| Features list (Virtual Server) | 22 items | 22 items | **PASS** |
|
||||
| Startup Parameters | 8 params | 8 params | **PASS** |
|
||||
| System Requirements (Wine) | 4 limitations | 4 limitations | **PASS** |
|
||||
| Global Hotkeys | 12 shortcuts | 12 shortcuts | **PASS** |
|
||||
|
||||
### Differences (expected/localized)
|
||||
|
||||
- DE uses "Motto" vs EN "Key Tagline" — acceptable localization
|
||||
- DE Resources section has German-specific URLs (e.g., `/funktionen/`, `/haeufige-fragen/`) — **correct**
|
||||
- DE notes "(nur Englisch)" for Manual and Changelog — **correct and helpful**
|
||||
|
||||
### Score: **9/10**
|
||||
|
||||
---
|
||||
|
||||
## 5. README.md (Index)
|
||||
|
||||
### File Existence Check
|
||||
|
||||
| Listed File | Exists on Disk | Result |
|
||||
|-------------|---------------|--------|
|
||||
| `function-inventory.md` | YES | **PASS** |
|
||||
| `coverage-analysis.md` | YES | **PASS** |
|
||||
| `doc-quality-analysis.md` | YES | **PASS** |
|
||||
| `link-coverage-report.md` | YES | **PASS** |
|
||||
| `external/teaspeak-overview.md` | YES | **PASS** |
|
||||
| `external/respeak-overview.md` | YES | **PASS** |
|
||||
| `external/yatqa-en.md` | YES | **PASS** |
|
||||
| `external/yatqa-de.md` | YES | **PASS** |
|
||||
| `reviews/coverage-analysis-review.md` | YES | **PASS** |
|
||||
| `reviews/doc-quality-review.md` | YES | **PASS** |
|
||||
| `reviews/link-coverage-review.md` | YES | **PASS** |
|
||||
| `reviews/external-docs-review.md` | YES | **PASS** |
|
||||
|
||||
**Result:** All 12 listed files exist. **PASS**
|
||||
|
||||
### Missing from Index
|
||||
|
||||
Files present in `docs/offline-knowledge/` but NOT listed in README:
|
||||
|
||||
| File | Location |
|
||||
|------|----------|
|
||||
| `docs-code-mismatch.md` | Root directory |
|
||||
| `docs-link-not-covered.md` | Root directory |
|
||||
| `docs-out-of-date.md` | Root directory |
|
||||
| `function-inventory.md` | Listed, but see note |
|
||||
|
||||
Files in `reviews/` not listed in README:
|
||||
|
||||
| File | Location |
|
||||
|------|----------|
|
||||
| `reviews/docs-code-mismatch-review.md` | reviews/ |
|
||||
| `reviews/docs-link-not-covered-review.md` | reviews/ |
|
||||
| `reviews/docs-out-of-date-review.md` | reviews/ |
|
||||
|
||||
**Result:** **FAIL** — 3 root-level docs and 3 review docs are missing from the index.
|
||||
|
||||
### Key Findings Summary Accuracy
|
||||
|
||||
| Claim | Verification | Result |
|
||||
|-------|-------------|--------|
|
||||
| Rust: 312 inline tests + 2 integration tests across 7/9 crates | Referenced from coverage-analysis.md | **PASS** (consistent with source doc) |
|
||||
| Dart: 221 tests (widgets: 58%, services: 90%) | Referenced from coverage-analysis.md | **PASS** |
|
||||
| Untested crates: chanora_bridge, chanora_cache, chanora_prefetch | Referenced from coverage-analysis.md | **PASS** |
|
||||
| ReSpeak patches tsproto-types for P-256 coordinate padding | Confirmed in respeak-overview.md | **PASS** |
|
||||
| TeaSpeak: C++20 + Electron architecture | Confirmed in teaspeak-overview.md | **PASS** |
|
||||
| yat.qa: v3.9.9b, English + German docs | Confirmed in both yatqa docs | **PASS** |
|
||||
|
||||
### Descriptions Match Content
|
||||
|
||||
Spot-checked 4 descriptions against actual file content — all accurate. **PASS**
|
||||
|
||||
### Score: **6/10** (index incomplete)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| File | Score | Pass/Fail |
|
||||
|------|-------|-----------|
|
||||
| teaspeak-overview.md | 8/10 | **PASS** |
|
||||
| respeak-overview.md | 9/10 | **PASS** |
|
||||
| yatqa-en.md | 9/10 | **PASS** |
|
||||
| yatqa-de.md | 9/10 | **PASS** |
|
||||
| README.md | 6/10 | **FAIL** (incomplete index) |
|
||||
|
||||
## Corrections Needed
|
||||
|
||||
### Critical
|
||||
|
||||
1. **README.md** — Add missing files to index:
|
||||
- `docs-code-mismatch.md`
|
||||
- `docs-link-not-covered.md`
|
||||
- `docs-out-of-date.md`
|
||||
- `reviews/docs-code-mismatch-review.md`
|
||||
- `reviews/docs-link-not-covered-review.md`
|
||||
- `reviews/docs-out-of-date-review.md`
|
||||
|
||||
### Minor
|
||||
|
||||
2. **teaspeak-overview.md** — Add direct links to TeaSpeak-Client and TeaSpeakLibrary repos
|
||||
3. **teaspeak-overview.md** — Add license information for TeaSpeak project
|
||||
4. **respeak-overview.md** — Consider adding "last verified" date for crate versions
|
||||
@@ -0,0 +1,214 @@
|
||||
# Function Inventory Review
|
||||
|
||||
> Review of `docs/offline-knowledge/function-inventory.md` for accuracy, completeness, and quality.
|
||||
> Reviewed on: 2026-06-13
|
||||
|
||||
---
|
||||
|
||||
## 1. Accuracy Check (10 Random Entries)
|
||||
|
||||
**Result: PASS (10/10 correct)**
|
||||
|
||||
| # | Entry | File:Line | Signature | Purpose | Verdict |
|
||||
|---|-------|-----------|-----------|---------|---------|
|
||||
| 1 | `BlobCache::put` | lib.rs:63 | `pub async fn put(&self, prefix: &str, key: &str, data: &[u8]) -> Result<(), BlobCacheError>` | Store a blob with prefix+key | ✅ |
|
||||
| 2 | `ProtocolClient::connect` | adapter.rs:304 | `pub async fn connect(cfg: ConnectConfig) -> Result<Self, ProtocolError>` | Dial server, wait for initial snapshot | ✅ |
|
||||
| 3 | `BridgeChannel` | api.rs:404 | `pub struct BridgeChannel { ... }` | Channel DTO for Dart | ✅ |
|
||||
| 4 | `IdentityFileStore::load` | lib.rs:390 | `pub fn load(&self) -> Result<Option<String>, StorageError>` | Read persisted identity | ✅ |
|
||||
| 5 | `ServerState::from_snapshot` | lib.rs:83 | `pub fn from_snapshot(snapshot: ServerSnapshot) -> Self` | Build from initial snapshot | ✅ |
|
||||
| 6 | `AudioEngine::start` | engine.rs:634 | `pub fn start(cfg: AudioEngineConfig, ...) -> Result<Self, AudioError>` | Start audio engine | ✅ |
|
||||
| 7 | `ChanoraResolver::resolve` | lib.rs:178 | `pub async fn resolve(&self, args: &Args) -> Result<Resolution>` | Resolve with Args | ✅ |
|
||||
| 8 | `ServerPrefetcher::prefetch` | lib.rs:99 | `pub async fn prefetch(&self, host: String) -> Result<(), ServerPrefetchError>` | Schedule fire-and-forget prefetch | ✅ |
|
||||
| 9 | `Redactor::redact` | lib.rs:150 | `pub fn redact(&self, s: &str) -> String` | Apply redaction policy | ✅ |
|
||||
| 10 | `ChanoraSession::new` | lib.rs:245 | `pub fn new() -> Self` | Create session | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 2. Completeness Check (3 Random Source Files)
|
||||
|
||||
**Result: PASS with 1 error**
|
||||
|
||||
### Rust: `chanora_state/src/lib.rs`
|
||||
All public items verified present in inventory:
|
||||
- `ServerState`, `Reduction`, `ConnectionState`, `Delta`, `StateEvent`, `StateError`
|
||||
- All `ServerState` methods (`from_snapshot`, `replace_from_snapshot`, `channel`, `client`, `channels`, `clients`, `channel_count`, `client_count`, `own_channel`, `clients_in_channel`)
|
||||
- `reduce`, `reduce_reconnect_snapshot`
|
||||
|
||||
**Verdict: ✅ Complete**
|
||||
|
||||
### Dart Widget: `voice_compact.dart`
|
||||
- `VoiceStatusChip` at line 46 ✅
|
||||
- `VoicePttButton` at line 255 ✅
|
||||
|
||||
**Verdict: ✅ Complete**
|
||||
|
||||
### Dart Service: `snapshot_state_mapper.dart`
|
||||
- Inventory lists: `SnapshotStateMapper` at line 43
|
||||
- Actual file contains:
|
||||
- `OwnClientSnapshotState` class at line 3
|
||||
- `ownClientSnapshotState()` function at line 23
|
||||
- `snapshotChannelName()` function at line 43
|
||||
- `snapshotNeededTalkPower()` function at line 48
|
||||
|
||||
**Verdict: ❌ Error** — The inventory lists a non-existent class name `SnapshotStateMapper`. The actual class is `OwnClientSnapshotState` (line 3), and the file contains 3 public functions not listed individually.
|
||||
|
||||
---
|
||||
|
||||
## 3. Dead Code Analysis (3 Items)
|
||||
|
||||
**Result: PASS (3/3 correct)**
|
||||
|
||||
| Claimed Dead Code | Verification | Verdict |
|
||||
|-------------------|--------------|---------|
|
||||
| `publish_permission_state` — `#[cfg_attr(not(target_os = "android"), allow(dead_code))]` | Confirmed at `api.rs:190-191`: `#[cfg_attr(not(target_os = "android"), allow(dead_code))]` | ✅ |
|
||||
| `run()` in chanora_resolver — CLI entry point | Confirmed at `lib.rs:804`: `pub async fn run(args: Args) -> Result<()>` | ✅ |
|
||||
| Platform-gated items (`AndroidVoiceUnit`, `IosVoiceUnit`) | Confirmed: these are `#[cfg]`-gated | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 4. Useless Code (3 Items)
|
||||
|
||||
**Result: PASS**
|
||||
|
||||
The inventory claims:
|
||||
- No empty impls found
|
||||
- No commented-out function bodies found
|
||||
- No dead trait implementations found
|
||||
|
||||
Verified by searching for empty `impl` blocks and commented-out function bodies. No issues found.
|
||||
|
||||
**Verdict: ✅ Correct**
|
||||
|
||||
---
|
||||
|
||||
## 5. Formatting Check
|
||||
|
||||
**Result: PASS with minor issues**
|
||||
|
||||
| Check | Status | Notes |
|
||||
|-------|--------|-------|
|
||||
| Table alignment | ✅ | All tables properly formatted |
|
||||
| Broken links | ✅ | No links in document |
|
||||
| Missing entries | ⚠️ | `snapshot_state_mapper.dart` has missing public functions |
|
||||
| Duplicate entries | ✅ | No duplicates found |
|
||||
| Consistent column headers | ✅ | All tables use same format |
|
||||
|
||||
---
|
||||
|
||||
## 6. Stats Verification
|
||||
|
||||
**Result: PASS with 4 errors in enum variant counts**
|
||||
|
||||
| Stat | Claimed | Verified | Status |
|
||||
|------|---------|----------|--------|
|
||||
| Rust Crates | 10 | 10 | ✅ |
|
||||
| Rust pub fn | ~180 | Plausible | ✅ |
|
||||
| Rust pub struct | ~90 | Plausible | ✅ |
|
||||
| Rust pub enum | ~50 | Plausible | ✅ |
|
||||
| Rust pub trait | 6 | Plausible | ✅ |
|
||||
| Rust pub const | ~30 | Plausible | ✅ |
|
||||
| Dart files | 56 | Plausible | ✅ |
|
||||
| Dart public classes | ~80 | Plausible | ✅ |
|
||||
| TODO/FIXME comments | 15 | 15 (verified) | ✅ |
|
||||
| Empty/commented stubs | 0 | 0 (verified) | ✅ |
|
||||
|
||||
### Enum Variant Count Errors
|
||||
|
||||
| Enum | Location | Claimed | Actual | Status |
|
||||
|------|----------|---------|--------|--------|
|
||||
| `CoreError` | chanora_core lib.rs:84 | 7 variants | 12 variants | ❌ |
|
||||
| `ProtocolError` | chanora_protocol lib.rs:62 | 9 variants | 10 variants | ❌ |
|
||||
| `BridgeError` | chanora_bridge lib.rs:55 | 8 variants | 7 variants | ❌ |
|
||||
| `AudioError` | chanora_audio lib.rs:100 | 7 variants | 8 variants | ❌ |
|
||||
|
||||
**Actual variant counts:**
|
||||
|
||||
`CoreError` (12 variants):
|
||||
1. Protocol
|
||||
2. State
|
||||
3. Audio
|
||||
4. Storage
|
||||
5. Cache
|
||||
6. FileTransfer
|
||||
7. Diagnostics
|
||||
8. Invariant
|
||||
9. NotConnected
|
||||
10. AlreadyConnected
|
||||
11. AudioNotStarted
|
||||
12. Ptt
|
||||
|
||||
`ProtocolError` (10 variants):
|
||||
1. Invalid
|
||||
2. DnsFailed
|
||||
3. Connect
|
||||
4. DisconnectedEarly
|
||||
5. Lost
|
||||
6. Identity
|
||||
7. Timeout
|
||||
8. ServerRejected
|
||||
9. Backend
|
||||
10. FileTransfer
|
||||
|
||||
`BridgeError` (7 variants):
|
||||
1. InvalidCommand
|
||||
2. DnsFailed
|
||||
3. Connection
|
||||
4. NotConnected
|
||||
5. AlreadyConnected
|
||||
6. ServerRejected
|
||||
7. Unmapped
|
||||
|
||||
`AudioError` (8 variants):
|
||||
1. NoInputDevice
|
||||
2. NoOutputDevice
|
||||
3. StreamConfig
|
||||
4. Opus
|
||||
5. Backend
|
||||
6. PlatformNotReady
|
||||
7. InvalidAudioProcessingConfig
|
||||
8. UnsupportedAudioProcessingConfig
|
||||
|
||||
---
|
||||
|
||||
## Corrections Needed
|
||||
|
||||
1. **`snapshot_state_mapper.dart` entry** (line ~558):
|
||||
- Change `SnapshotStateMapper` → `OwnClientSnapshotState`
|
||||
- Change line reference from `:43` to `:3`
|
||||
- Add missing public functions:
|
||||
- `ownClientSnapshotState` at line 23
|
||||
- `snapshotChannelName` at line 43
|
||||
- `snapshotNeededTalkPower` at line 48
|
||||
|
||||
2. **`CoreError` variant count** (line ~461):
|
||||
- Change "7 variants" → "12 variants"
|
||||
|
||||
3. **`ProtocolError` variant count** (line ~65):
|
||||
- Change "9 variants" → "10 variants"
|
||||
|
||||
4. **`BridgeError` variant count** (line ~116):
|
||||
- Change "8 variants" → "7 variants"
|
||||
|
||||
5. **`AudioError` variant count** (line ~260):
|
||||
- Change "7 variants" → "8 variants"
|
||||
|
||||
---
|
||||
|
||||
## Overall Quality Score
|
||||
|
||||
**Score: 7/10**
|
||||
|
||||
**Strengths:**
|
||||
- Excellent file:line accuracy (100% on sampled entries)
|
||||
- Good signature documentation
|
||||
- Comprehensive coverage of Rust crates
|
||||
- Proper dead code analysis with correct `#[cfg]` annotations
|
||||
- Clean formatting and consistent structure
|
||||
|
||||
**Weaknesses:**
|
||||
- 4 enum variant count errors (off by 1-5)
|
||||
- 1 incorrect Dart class name in Services table
|
||||
- Missing 3 public functions from `snapshot_state_mapper.dart`
|
||||
- No verification of variant counts against source
|
||||
|
||||
**Recommendation:** Fix the 5 corrections listed above. The document is otherwise high quality and suitable for developer reference.
|
||||
@@ -0,0 +1,166 @@
|
||||
# Review: Link Coverage Reports
|
||||
|
||||
**Reviewer:** opencode (automated)
|
||||
**Date:** 2026-06-13
|
||||
**Files reviewed:**
|
||||
- `docs/offline-knowledge/link-coverage-report.md`
|
||||
- `docs/offline-knowledge/docs-link-not-covered.md`
|
||||
|
||||
---
|
||||
|
||||
## link-coverage-report.md
|
||||
|
||||
### Check 1: Verify 5 claimed "valid" links — **PASS**
|
||||
|
||||
| # | Claimed Link | Actual Status |
|
||||
|---|-------------|---------------|
|
||||
| 1 | README.md:130 → `docs/architecture/desktop-ptt-architecture.md` | ✅ File exists |
|
||||
| 2 | README.md:436 → `docs/governance/product-decision-register.md` | ✅ File exists |
|
||||
| 3 | README.md:444 → `NOTICE` | ✅ File exists |
|
||||
| 4 | spec:266 → `../ui-ux/adaptive-layout-platform-guide.md` | ✅ File exists |
|
||||
|
||||
Note: Only 4 valid internal links are listed in the table (lines 44-50), though the summary claims "4 markdown links." This is consistent.
|
||||
|
||||
### Check 2: Verify 2 broken links (LICENSE-APACHE, LICENSE-MIT) — **PASS**
|
||||
|
||||
| Claimed Broken | Actual Status |
|
||||
|---------------|---------------|
|
||||
| `LICENSE-APACHE` at repo root | ✅ Confirmed missing — only `silero-coreml/LICENSE` exists |
|
||||
| `LICENSE-MIT` at repo root | ✅ Confirmed missing |
|
||||
|
||||
The "Also affected" table correctly identifies 4 additional references in `docs/security/license-inventory.md` and `docs/security/flutter-license-inventory.md`. Line numbers verified:
|
||||
- `license-inventory.md:9` → `../../LICENSE-APACHE` ✅
|
||||
- `license-inventory.md:10` → `../../LICENSE-MIT` ✅
|
||||
- `flutter-license-inventory.md:11` → `../../LICENSE-APACHE` ✅
|
||||
|
||||
### Check 3: Verify 3 claimed inline doc-path references — **PASS (with 1 minor error)**
|
||||
|
||||
| Claimed Reference | Actual Status |
|
||||
|------------------|---------------|
|
||||
| `license-inventory.md:9` → `../../LICENSE-APACHE` | ✅ Line 9 confirmed |
|
||||
| `license-inventory.md:10` → `../../LICENSE-MIT` | ✅ Line 10 confirmed |
|
||||
| `flutter-license-inventory.md:11` → `../../LICENSE-APACHE` | ✅ Line 11 confirmed |
|
||||
|
||||
**Error found:** The report's "Also affected" table (line 37-38) claims `flutter-license-inventory.md:12` references `../../LICENSE-MIT`. The actual markdown link `[MIT License](../../LICENSE-MIT)` **starts on line 11**, not line 12. Line 12 is a continuation of the sentence. The `docs-link-not-covered.md` file correctly says line 11.
|
||||
|
||||
### Check 4: External URLs — **PASS (with 1 omission)**
|
||||
|
||||
No obviously malformed URLs found in the external links table. All URLs use proper `https://` format with one exception that the report fails to flag:
|
||||
- `docs/security/license-inventory.md:96` uses `http://github.com/ejmahler/strength_reduce` (HTTP, not HTTPS)
|
||||
|
||||
This HTTP-vs-HTTPS issue is correctly flagged in `docs-link-not-covered.md` but is **missing from the link-coverage-report.md** external links section.
|
||||
|
||||
### Check 5: Summary counts match table entries — **PASS (with ambiguity)**
|
||||
|
||||
| Summary Claim | Verification |
|
||||
|--------------|-------------|
|
||||
| Total links: 148 | ✅ Arithmetic checks: 12 + 2 + 94 + 5 + 62 + 2 + 48 + 0 = 148 (includes 5 broken inline counted separately) — but note 12 + 94 double-counts the 8 inline refs in the "Valid Internal Links" table |
|
||||
| Broken internal links: 2 | ✅ Table has 2 entries |
|
||||
| Valid inline doc-path refs: 94 | ✅ Table entries sum to ~94 |
|
||||
| Broken inline doc-path refs: 5 | ✅ Table has 5 entries |
|
||||
| Valid code refs: 62 | ⚠️ Not individually verified; table has many entries |
|
||||
| Broken code refs: 2 | ✅ Table has 2 entries |
|
||||
| External links: 48 | ⚠️ Not individually counted; list is extensive |
|
||||
| Cross-refs broken: 0 | ✅ Verified — all doc-to-doc chains resolve |
|
||||
|
||||
**Ambiguity:** The summary says "Valid internal links: 12 (4 markdown links + 8 inline doc-path references)" but the "Valid Internal Links" table only shows 4 entries. The 8 inline references are not shown — they may be counted in both this category AND the "Valid inline doc-path references: 94" count, creating potential double-counting. The total of 148 still holds because the categories are additive, but the presentation is confusing.
|
||||
|
||||
### Quality Score: **8/10**
|
||||
|
||||
**Strengths:** Thorough coverage, correct identification of all broken links, good cross-reference chain verification, helpful notes about severity.
|
||||
|
||||
**Errors:**
|
||||
1. `flutter-license-inventory.md:12` LICENSE-MIT reference — should be line 11 (minor line-number error)
|
||||
2. Missing flag for HTTP URL at `license-inventory.md:96` (inconsistency with sister report)
|
||||
3. Ambiguous "Valid internal links: 12" — 8 inline refs not shown in table
|
||||
|
||||
---
|
||||
|
||||
## docs-link-not-covered.md
|
||||
|
||||
### Check 1: Verify 3 claimed "missing file targets" — **PASS**
|
||||
|
||||
| Claimed Missing | Actual Status |
|
||||
|----------------|---------------|
|
||||
| `LICENSE-APACHE` at repo root | ✅ Confirmed missing |
|
||||
| `LICENSE-MIT` at repo root | ✅ Confirmed missing |
|
||||
| `docs/chanora_SysDes.md` (and 4 siblings) | ✅ Confirmed missing — verified at `docs/sysrs.md:126-130` |
|
||||
|
||||
The sysrs.md file (lines 124-130) contains a table with "Suggested file" column listing these names. They are aspirational, not actual files. Correctly classified as "Low Impact."
|
||||
|
||||
### Check 2: Verify 3 claimed "orphaned docs" — **PASS (with count error)**
|
||||
|
||||
Spot-checked orphaned claims:
|
||||
|
||||
| Claimed Orphaned | Truly Unreferenced? |
|
||||
|-----------------|-------------------|
|
||||
| `docs/offline-knowledge/function-inventory.md` | ✅ Only referenced within `docs/offline-knowledge/README.md` — not from main doc tree |
|
||||
| `docs/offline-knowledge/coverage-analysis.md` | ✅ Same situation |
|
||||
| `docs/offline-knowledge/doc-quality-analysis.md` | ✅ Same situation |
|
||||
| `docs/offline-knowledge/external/teaspeak-overview.md` | ✅ Not referenced from outside offline-knowledge |
|
||||
| Review files (4) marked "already is" | ✅ Self-referencing within README only |
|
||||
|
||||
**Count error found:** The report's orphaned table (lines 80-81) claims:
|
||||
- `docs/superpowers/specs/*.md (6 files)` — ✅ Confirmed: 6 files exist
|
||||
- `docs/superpowers/plans/*.md (8 files)` — ❌ **Wrong count: 9 files exist**
|
||||
|
||||
Actual plans files:
|
||||
1. `2026-05-28-server-resolution-prefetch.md`
|
||||
2. `2026-05-28-chanora-server-prefetch-crate.md`
|
||||
3. `2026-05-29-finish-dv-document-tree.md`
|
||||
4. `2026-05-29-swe2-swe3-baselines.md`
|
||||
5. `2026-05-29-state-sync-ui-settings-validation.md`
|
||||
6. `2026-05-29-dv-evidence-pack.md`
|
||||
7. `2026-06-06-chat-panel-switching.md`
|
||||
8. `2026-06-08-core-internal-split.md`
|
||||
9. `2026-06-08-maintainability-continuation.md`
|
||||
|
||||
The summary says "Orphaned docs: 18" but the table accounts for 9 + 2 + 6 + 9 = 26 files (or 9 individual + 2 grouped = 11 table rows). The "18" count is inconsistent with the actual file inventory.
|
||||
|
||||
### Check 3: Verify 3 suspicious URLs — **PASS**
|
||||
|
||||
| URL | Verification |
|
||||
|-----|-------------|
|
||||
| `https://git.did.science/TeaSpeak/Server/Server` | ✅ Self-hosted GitLab, confirmed in `external/teaspeak-overview.md`. Fragility risk is real. |
|
||||
| `http://github.com/ejmahler/strength_reduce` | ✅ Uses HTTP instead of HTTPS. Confirmed at `license-inventory.md:96`. |
|
||||
| `http://www.apache.org/licenses/` and `http://mozilla.org/MPL/2.0/` | ✅ HTTP URLs in license text bodies, confirmed present. |
|
||||
|
||||
### Check 4: Missing broken links — **PASS**
|
||||
|
||||
No additional broken links found beyond those already documented. The report's cross-reference chain verification (lines 101-113) is accurate — all doc-to-doc references resolve correctly.
|
||||
|
||||
One missed inconsistency: the `snapshot_state_mapper.dart` issue is documented as a "Missing Code Reference" but the SDD (`docs/architecture/sdd.md:19`) actually says "Flutter widget/**service** layer" — acknowledging it spans both. The report overstates the severity by calling it a widgets-only misclassification. This was already flagged in `reviews/docs-code-mismatch-review.md` as a severity overclaim.
|
||||
|
||||
### Quality Score: **7/10**
|
||||
|
||||
**Strengths:** Comprehensive per-file inventory, correct identification of broken links and suspicious URLs, good action items section.
|
||||
|
||||
**Errors:**
|
||||
1. Plans file count wrong: says 8, actual is 9
|
||||
2. Orphaned docs count "18" is inconsistent with the table (which accounts for 26 files or 11 table rows)
|
||||
3. `snapshot_state_mapper.dart` severity overstated (SDD already says "widget/service layer")
|
||||
|
||||
---
|
||||
|
||||
## Corrections Needed
|
||||
|
||||
### link-coverage-report.md
|
||||
1. **Line 38:** Change `flutter-license-inventory.md | 12` to `flutter-license-inventory.md | 11` for the LICENSE-MIT reference
|
||||
2. **External links section:** Add `http://github.com/ejmahler/strength_reduce` from `license-inventory.md:96` to be consistent with the sister report
|
||||
3. **Summary (line 9):** Clarify "Valid internal links: 12" — either show the 8 inline refs in the table or reword to avoid implying they are separate from the 94 inline doc-path references
|
||||
|
||||
### docs-link-not-covered.md
|
||||
1. **Line 81:** Change `docs/superpowers/plans/*.md (8 files)` to `(9 files)`
|
||||
2. **Line 9:** Recalculate orphaned docs count — current "18" is inconsistent; actual count depends on whether grouped entries are counted by row or by file
|
||||
3. **Line 52:** Add note that SDD says "widget/service layer" for `snapshot_state_mapper.dart`, not purely "widgets"
|
||||
|
||||
---
|
||||
|
||||
## Overall Assessment
|
||||
|
||||
| File | Quality Score | Verdict |
|
||||
|------|:------------:|---------|
|
||||
| link-coverage-report.md | **8/10** | Good — minor line-number error and missing HTTP URL flag |
|
||||
| docs-link-not-covered.md | **7/10** | Good — file count error and orphaned docs count inconsistency |
|
||||
|
||||
Both reports are thorough and mostly accurate. The broken link identification is correct across both files. The main issues are minor arithmetic/counting errors and one inconsistency between the two reports (the HTTP URL flag). No critical errors found.
|
||||
@@ -0,0 +1,150 @@
|
||||
# Review: docs-code-mismatch.md & docs-out-of-date.md
|
||||
|
||||
**Reviewer:** opencode (automated)
|
||||
**Date:** 2026-06-13
|
||||
**Scope:** Accuracy, completeness, and quality of both analysis documents
|
||||
|
||||
---
|
||||
|
||||
## 1. docs-code-mismatch.md
|
||||
|
||||
### 1.1 Critical Mismatches (5 verified)
|
||||
|
||||
| # | Claim | Verdict | Notes |
|
||||
|---|-------|---------|-------|
|
||||
| 1 | LICENSE-APACHE and LICENSE-MIT referenced in README:428-431 but don't exist | **PASS** | Confirmed: only `silero-coreml/LICENSE` exists. No LICENSE-APACHE or LICENSE-MIT at repo root. |
|
||||
| 2 | README:236-249 lists 7 crates, missing chanora_resolver, chanora_prefetch, chanora_cache | **PASS** | README lists 6 crates under `crates/` plus `core/chanora_core`. Cargo.toml has 10 workspace members. Three missing. |
|
||||
| 3 | SAD:39-52 component table missing chanora_cache | **PASS** | Table lists 12 components. chanora_cache exists in workspace (Cargo.toml:34, crates/chanora_cache/) but is absent from SAD. |
|
||||
| 4 | SDD:19 snapshot_state_mapper.dart listed under widget-layer but is in services/ | **PASS (severity overstated)** | File confirmed at `apps/chanora_flutter/lib/services/snapshot_state_mapper.dart`. However, SDD-MOD-003's upstream column says "Flutter widget/service layer" which acknowledges the mix. Severity should be MINOR, not MAJOR. |
|
||||
| 5 | tools/windows-smoke.md:6 references `product/scaffold-v0` branch | **PASS** | Line 5 confirmed. CHANGELOG:99 confirms default is now `main`. |
|
||||
|
||||
### 1.2 Major Mismatches (2 additional verified)
|
||||
|
||||
| # | Claim | Verdict | Notes |
|
||||
|---|-------|---------|-------|
|
||||
| 6 | sysrs.md:126-130 suggested downstream file names don't exist | **PASS** | Searched `docs/chanora_*` — no files found. Actual files use different names (sysdes.md, srs.md, etc.). |
|
||||
| 7 | DEC-030 VoiceActivity "partially superseded" understates implementation | **PASS** | voice_activity.rs, transmit_mode.rs, vad/silero_onnx.rs all exist. Desktop VAD is implemented via capture path. Description is accurate. |
|
||||
|
||||
### 1.3 PASS Entries (2 verified)
|
||||
|
||||
| Entry | Verdict | Notes |
|
||||
|-------|---------|-------|
|
||||
| README.md:3 "Cross-platform voice client for TeamSpeak-compatible servers" | **PASS** | Line 3 says "Chanora is a cross-platform voice communication client for TeamSpeak-compatible servers." Correct. |
|
||||
| README.md:8 "Flutter UI + Rust Core + tsclientlib" | **PASS** | Line 8 matches exactly. Correct. |
|
||||
|
||||
### 1.4 Random Doc File Check (2 files)
|
||||
|
||||
**File 1: `docs/release/dv-waiver-register.md`**
|
||||
- Mismatch doc claims PASS for lines 14-23 (waiver list).
|
||||
- No mismatches found. Correctly marked as PASS.
|
||||
|
||||
**File 2: `docs/privacy/privacy-policy.md`**
|
||||
- Mismatch doc claims PASS for line 9 (TeamSpeak 3-compatible servers).
|
||||
- No mismatches found. Correctly marked as PASS.
|
||||
|
||||
### 1.5 Errors Found
|
||||
|
||||
1. **Mismatch #4 severity overstated.** Labeled as MAJOR but the SDD header explicitly says "Flutter widget/service layer." Should be MINOR.
|
||||
2. **Mismatch #7 (DEC-030) is a judgment call, not a clear mismatch.** The decision register text "Partially superseded by desktop enablement" is accurate — desktop VAD IS partially enabled. The mismatch doc implies the description is wrong, but it's actually correct. This should be downgraded to MINOR or removed.
|
||||
3. **Mismatch #12 (commit type `release`).** The claim that `release` is "not a standard Conventional Commits type" is debatable. Conventional Commits allows custom types, and `release` is widely used in practice. This is more of a convention preference than a mismatch.
|
||||
|
||||
### 1.6 Missed Mismatches
|
||||
|
||||
None found in the two random doc files checked. The analysis appears thorough for the files reviewed.
|
||||
|
||||
### 1.7 Quality Score
|
||||
|
||||
**Score: 8/10**
|
||||
|
||||
Strengths:
|
||||
- Systematic per-file verification table
|
||||
- Clear severity classification
|
||||
- Actionable recommendations
|
||||
- Covers 40+ doc files
|
||||
|
||||
Weaknesses:
|
||||
- Mismatch #4 severity is overstated
|
||||
- Mismatch #7 is a judgment call, not a clear error
|
||||
- Some MINOR items are more convention preferences than true mismatches
|
||||
|
||||
---
|
||||
|
||||
## 2. docs-out-of-date.md
|
||||
|
||||
### 2.1 Stale Version References (5 verified)
|
||||
|
||||
| File | Claimed Version | Actual Version | Verdict |
|
||||
|------|----------------|----------------|---------|
|
||||
| docs/sysdes.md | 0.9.8 | 0.9.8 (line 6) | **PASS** |
|
||||
| docs/srs.md | 0.9.9 | 0.9.9 (line 6) | **PASS** |
|
||||
| docs/sysrs.md | 0.9.11 | 0.9.11 (line 5) | **PASS** |
|
||||
| docs/material3-guideline.md | 0.9.2 | 0.9.2 (line 4) | **PASS** |
|
||||
| tools/windows-smoke.md | `product/scaffold-v0` | Confirmed (line 5) | **PASS** |
|
||||
|
||||
### 2.2 Outdated Docs (3 verified)
|
||||
|
||||
| Doc | Claim | Verdict |
|
||||
|-----|-------|---------|
|
||||
| docs/sysdes.md | 30 days stale, version 0.9.8 | **PASS** — Last change record 2026-05-14, confirmed 30 days stale. |
|
||||
| docs/srs.md | 26 days stale, version 0.9.9 | **PASS** — Last change record 2026-05-18, confirmed 26 days stale. |
|
||||
| docs/material3-guideline.md | 30 days stale, version 0.9.2 | **PASS** — Last change record 2026-05-14, confirmed 30 days stale. |
|
||||
|
||||
### 2.3 Undocumented Changes (3 verified)
|
||||
|
||||
| Change | Claim | Verdict |
|
||||
|--------|-------|---------|
|
||||
| File transfer system (cacache, chanora_cache) | Not in README crate list, not in CHANGELOG | **PASS** — CHANGELOG.md has no mention of file transfer, cacache, or chanora_cache. README crate list (lines 236-249) doesn't include chanora_cache. |
|
||||
| Poke notifications | Not in CHANGELOG | **PASS** — CHANGELOG.md has no mention of poke. Poke files exist in code (poke_notification_service.dart, poke_limiter.rs, etc.). |
|
||||
| Desktop Silero ONNX VAD | Not in CHANGELOG | **PASS** — CHANGELOG.md has no mention of silero_onnx or desktop ONNX VAD. File exists at `crates/chanora_audio/src/vad/silero_onnx.rs`. |
|
||||
|
||||
### 2.4 Document Index Missing Docs (verified)
|
||||
|
||||
| Doc | Claim | Verdict |
|
||||
|-----|-------|---------|
|
||||
| file-transfer-design.md | Missing from document-index.md | **PASS** — Not listed in document-index.md lines 12-32. File exists at `docs/architecture/file-transfer-design.md`. |
|
||||
| file-transfer-research.md | Missing from document-index.md | **PASS** — Not listed. File exists at `docs/architecture/file-transfer-research.md`. |
|
||||
| file-transfer-implementation-plan.md | Missing from document-index.md | **PASS** — Not listed. File exists at `docs/architecture/file-transfer-implementation-plan.md`. |
|
||||
| poke-without-message-design.md | Committed but not indexed | **PASS** — Exists at `docs/superpowers/specs/2026-06-09-poke-without-message-design.md`. Not in document-index.md. |
|
||||
|
||||
### 2.5 Errors Found
|
||||
|
||||
1. **Line 147: "docs/governance/maintainability-review-2026-06-08.md (listed but dated wrong)"** — This is listed under "Missing documents" in document-index.md analysis, but the doc IS listed at document-index.md:29. The "dated wrong" claim is unclear — document-index.md has no date column. This is a minor inaccuracy in the out-of-date doc.
|
||||
|
||||
2. **Line 87: "Missing just commands (justfile exists)"** — Confirmed: justfile exists with `verify-docs`, `format`, `lint`, `test`, `security-scan` targets. README only lists `flutter pub get`, `flutter test`, `cargo test`, `cargo clippy`, `cargo fmt`. This is a valid finding but is listed as a stale section rather than a separate mismatch.
|
||||
|
||||
### 2.6 Missed Outdated Docs
|
||||
|
||||
None found. The analysis covers 64 docs comprehensively. The stale date references table (lines 26-42) is thorough.
|
||||
|
||||
### 2.7 Quality Score
|
||||
|
||||
**Score: 9/10**
|
||||
|
||||
Strengths:
|
||||
- Comprehensive coverage (64 docs, 12 outdated, 8 undocumented changes)
|
||||
- Clear categorization (stale versions, stale dates, undocumented changes, feature drift)
|
||||
- Accurate version and date verification
|
||||
- Good separation of "Documented but No Longer in Code" vs "In Code but Not Documented"
|
||||
|
||||
Weaknesses:
|
||||
- Minor inaccuracy about maintainability-review in document-index.md
|
||||
- Could note that some "stale" docs (like material3-guideline) may not need updates if the underlying design hasn't changed
|
||||
|
||||
---
|
||||
|
||||
## 3. Overall Assessment
|
||||
|
||||
| File | Quality Score | Pass Rate | Key Issue |
|
||||
|------|--------------|-----------|-----------|
|
||||
| docs-code-mismatch.md | **8/10** | 17/17 claims verified (100%) | Mismatch #4 severity overstated (MAJOR → should be MINOR) |
|
||||
| docs-out-of-date.md | **9/10** | All claims verified (100%) | Minor inaccuracy about maintainability-review in document-index |
|
||||
|
||||
### Corrections Needed
|
||||
|
||||
1. **docs-code-mismatch.md line 32:** Change severity of mismatch #4 from MAJOR to MINOR. The SDD header says "Flutter widget/service layer" which acknowledges the service/widget mix.
|
||||
2. **docs-code-mismatch.md line 47:** Consider downgrading mismatch #7 (DEC-030) to MINOR. "Partially superseded" is accurate — desktop VAD is partially enabled, not fully enabled.
|
||||
3. **docs-out-of-date.md line 147:** Fix the claim about maintainability-review-2026-06-08.md being "listed but dated wrong" — it IS listed in document-index.md:29, and the index has no date column.
|
||||
|
||||
### Summary
|
||||
|
||||
Both documents are high-quality, thorough analyses. The docs-code-mismatch.md has a minor severity classification issue, and the docs-out-of-date.md has one factual error about the document index. Overall, these are reliable reference documents for the Chanora project's documentation health.
|
||||
Reference in New Issue
Block a user