|
| 1 | +# Documentation & Version Audit — 2026-04-06 |
| 2 | + |
| 3 | +Comprehensive audit of all documentation files, version numbers, and cross-references in the Adjutant monorepo. Performed against commit `e877238` (main). |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## VERSION MISMATCHES |
| 8 | + |
| 9 | +### 1. Test asserts wrong version — `tests/unit/test_cli.py:44` |
| 10 | +- Asserted `"0.1.0"` but `VERSION` file says `0.2.0` |
| 11 | +- **Status:** FIXED — updated assertion to `"0.2.0"` |
| 12 | + |
| 13 | +### 2. CHANGELOG doesn't document 0.2.0 |
| 14 | +- `CHANGELOG.md:10` said `[Unreleased] — Post-0.1.0 Hardening` but `VERSION` is already `0.2.0` |
| 15 | +- **Status:** FIXED — changed header to `[0.2.0] — Unreleased — Post-0.1.0 Hardening` |
| 16 | + |
| 17 | +### 3. `web/api/package.json` version is `1.0.0` |
| 18 | +- `web/app/package.json` is `0.0.0` (placeholder), `site/package.json` is `0.0.0` |
| 19 | +- The API was arbitrarily `1.0.0` |
| 20 | +- **Status:** FIXED — changed to `0.0.0` for consistency with other workspaces |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +## DOCS vs CODE CONTRADICTIONS |
| 25 | + |
| 26 | +### 4. Vision on Claude CLI — docs said "No", code says `True` |
| 27 | +- `backend_claude_cli.py:119` sets `vision=True` |
| 28 | +- Commit `2432d92` explicitly enabled this: "feat: enable vision on claude-cli backend via Read tool image injection" |
| 29 | +- **Status:** FIXED — updated capability tables in `README.md`, `docs/intro.md`, `docs/guides/backends.md`. Removed stale "vision unsupported" error message example. Updated "when to use" sections and known behavioral differences. |
| 30 | + |
| 31 | +### 5. Model listing on Claude CLI — docs said "No", code says `True` |
| 32 | +- `backend_claude_cli.py:120` sets `model_listing=True` |
| 33 | +- **Status:** FIXED — updated capability tables in `README.md`, `docs/intro.md`, `docs/guides/backends.md` |
| 34 | + |
| 35 | +### 6. `adjutant doctor` output example was stale — `docs/guides/commands.md` |
| 36 | +- Showed sample output listing only `opencode` |
| 37 | +- Actual code checks backend-specific binary (`opencode` OR `claude`/`cloudcli`) |
| 38 | +- **Status:** FIXED — updated sample output to show `claude`/`cloudcli` with comment explaining backend dependency. Added explanatory paragraph. |
| 39 | + |
| 40 | +### 7. `https://localhost:3021` — `docs/guides/web.md:13` |
| 41 | +- Initially flagged as wrong (assumed Vite serves HTTP), but HTTPS is correct for this project. |
| 42 | +- **Status:** NOT A BUG — reverted change, `https://` is correct |
| 43 | + |
| 44 | +### 8. `SECURITY_ASSESSMENT.md` references bash-era architecture |
| 45 | +- The entire document (dated 2026-03-01) references the old bash implementation: |
| 46 | + - Line 5: "Adjutant v1.0 — single-user personal agent, bash/macOS/Linux" |
| 47 | + - References `scripts/messaging/adaptor.sh`, `scripts/common/env.sh`, `scripts/common/logging.sh`, `scripts/common/opencode.sh` |
| 48 | + - "Rate Limiting — **Not yet implemented**" — but rate limiting IS implemented in the Python rewrite |
| 49 | +- **Status:** FIXED — added deprecation banner at top of file noting the document is outdated and a new assessment against the Python architecture is needed. Changed scope line to "pre-0.1.0". |
| 50 | + |
| 51 | +### 9. `docs/guides/getting-started.md` — only mentioned OpenCode backend |
| 52 | +- Lines 15-21: prerequisites only listed `opencode`, showed `opencode --version` |
| 53 | +- `docs/getting-started/installation.md` (the Docusaurus version) correctly mentions both backends |
| 54 | +- **Status:** FIXED — updated prerequisites to mention both backends with dual code examples, matching `installation.md` |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## STRUCTURAL ISSUES |
| 59 | + |
| 60 | +### 10. `guides/web.md` was not in the Docusaurus sidebar |
| 61 | +- `site/sidebars.ts` listed 10 guides — `web` was missing |
| 62 | +- **Status:** FIXED — added `'guides/web'` to sidebar between `news` and `troubleshooting` |
| 63 | + |
| 64 | +### 11. Duplicate getting-started content |
| 65 | +- `docs/guides/getting-started.md` — comprehensive guide (182 lines) |
| 66 | +- `docs/getting-started/installation.md` + `telegram-setup.md` + `setup-wizard.md` + `first-message.md` — same content split into 4 pages |
| 67 | +- The `guides/` version had the stale plist example; neither is excluded from Docusaurus |
| 68 | +- **Status:** FIXED — added `guides/getting-started.md` to Docusaurus exclude list in `site/docusaurus.config.ts`. The file is kept for local readers (linked from `docs/README.md`) but no longer published to the docs site, avoiding a competing page. The canonical Docusaurus path is the 4-page split under `getting-started/`. |
| 69 | + |
| 70 | +### 12. `CHANGELOG.md:146` referenced "adjutant-docs" as separate repo |
| 71 | +- "Docusaurus documentation site (`adjutant-docs`)" — but after the monorepo consolidation, the docs site lives at `site/` |
| 72 | +- **Status:** FIXED — changed to `site/` |
| 73 | + |
| 74 | +### 13. `docs/guides/lifecycle.md:183` claimed `doctor` checks `jq` dependency |
| 75 | +- Said: "Checks that all required tools are installed (`bash`, `curl`, `jq`, `python3`, `opencode`)" |
| 76 | +- `jq` is not a real runtime dependency of the Python rewrite. Doctor does check it, but nothing uses it. |
| 77 | +- **Status:** FIXED — updated text to say "bash, curl, python3, and your configured LLM backend binary". Note: `jq` is still checked by doctor in code (`cli.py:781`) — that's a separate code cleanup item. |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +## AMBIGUITIES / UNCLEARNESS |
| 82 | + |
| 83 | +### 14. LaunchAgent plist name inconsistency |
| 84 | +- `docs/guides/getting-started.md:128` uses label `com.adjutant.telegram` |
| 85 | +- `docs/guides/lifecycle.md` used filename `adjutant.telegram.plist` |
| 86 | +- The wizard (`src/adjutant/setup/steps/service.py:177`) generates `com.adjutant.telegram.plist` |
| 87 | +- **Status:** FIXED — updated lifecycle.md to use `com.adjutant.telegram.plist` (matching wizard output) |
| 88 | + |
| 89 | +### 15. `docs/guides/web.md` — port env var clarity |
| 90 | +- Line 207: "API port configurable via `--port` flag or `ADJUTANT_WEB_PORT`" |
| 91 | +- Verified: `web/api/src/config.ts:5` reads `process.env.ADJUTANT_WEB_PORT`, and `src/adjutant/cli.py:622` passes the `--port` value as `ADJUTANT_WEB_PORT` to the API subprocess. |
| 92 | +- **Status:** NOT A BUG — documentation is correct |
| 93 | + |
| 94 | +### 16. `docs/guides/backends.md` — streaming mentioned without context |
| 95 | +- Table row: `| Streaming output | Yes | No |` |
| 96 | +- **Status:** FIXED — added `(single-shot JSON)` clarification to table, and expanded the "Response style" behavioral difference paragraph to explain how streaming affects Telegram delivery. |
| 97 | + |
| 98 | +--- |
| 99 | + |
| 100 | +## SUMMARY |
| 101 | + |
| 102 | +| Priority | Total | Fixed | Not a bug | |
| 103 | +|----------|-------|-------|-----------| |
| 104 | +| P0 (wrong) | 5 | 5 | 0 | |
| 105 | +| P1 (misleading) | 5 | 4 | 1 (#7) | |
| 106 | +| P2 (cleanup) | 6 | 5 | 1 (#15) | |
| 107 | +| **Total** | **16** | **14** | **2** | |
| 108 | + |
| 109 | +All items resolved. |
0 commit comments