- Move ASPICE docs to chanoraapp/docs submodule at docs/ - Move development docs to dev-docs/ (superpowers, offline-knowledge, impl-mapping) - Add AGENTS.md with project conventions for AI agents - Add impl-mapping.md (SAD component → source file mapping) - Archive completed plans to dev-docs/superpowers/plans/_archived/ - Remove AGENTS.md from .gitignore (now tracked)
149 lines
7.4 KiB
Markdown
149 lines
7.4 KiB
Markdown
# 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)
|