M6.5 [P2]: CLI polish - dead ephemeral DB, missing commands, self-update exception #259

Open
opened 2026-07-31 14:42:55 +00:00 by KofTwentyTwo · 1 comment
KofTwentyTwo commented 2026-07-31 14:42:55 +00:00 (Migrated from github.com)

CLI audit findings (area scored 9/10; these are the path to 10): (1) runner.rs:206-263 HeadlessRunner still constructs an ephemeral DatabaseEngine/EventBus/TempDir that nothing reads (allow(dead_code)) - a dead remnant of the old CLI-holds-its-own-store anti-pattern; delete it. (2) Add CLI commands for the 3 uncovered RPCs: cal show (Calendar/GetEvent), contact show (Contacts/GetContact), system watch (System/Subscribe stream). (3) update check/apply (runner.rs:516-614) run client-local against GitHub instead of behind a daemon RPC - document as the one sanctioned non-gRPC exception, or move behind an RPC.

Source: full-tree audit 2026-07-30 (scratchpad/audit/AUDIT-SUMMARY.md). Follow docs/STORY-WORKFLOW.md: engine+proto(if surface)+CLI+offline E2E, mock-only tests, no fabricated data, comment convention, PR to dev, PO reviews before close.

CLI audit findings (area scored 9/10; these are the path to 10): (1) runner.rs:206-263 HeadlessRunner still constructs an ephemeral DatabaseEngine/EventBus/TempDir that nothing reads (allow(dead_code)) - a dead remnant of the old CLI-holds-its-own-store anti-pattern; delete it. (2) Add CLI commands for the 3 uncovered RPCs: cal show (Calendar/GetEvent), contact show (Contacts/GetContact), system watch (System/Subscribe stream). (3) update check/apply (runner.rs:516-614) run client-local against GitHub instead of behind a daemon RPC - document as the one sanctioned non-gRPC exception, or move behind an RPC. Source: full-tree audit 2026-07-30 (scratchpad/audit/AUDIT-SUMMARY.md). Follow docs/STORY-WORKFLOW.md: engine+proto(if surface)+CLI+offline E2E, mock-only tests, no fabricated data, comment convention, PR to dev, PO reviews before close.
KofTwentyTwo commented 2026-08-15 01:39:57 +00:00 (Migrated from github.com)

Triaged against current dev and partially done in #427 (3508b5e). Each item was re-verified rather than assumed, since this issue predates a large refactor.

Done: the runner's dead ephemeral store is gone. Removing it made construction infallible and sync, so ephemeral* became connect* across 39 call sites; the runner_error_display test went with it because RunnerError no longer exists (verified: zero remaining references). No other assertion was touched.

Already fine — this issue predates them: mail move|delete|flag|unflag|conflicts|resolve all exist with callers, added in #417.

Still valid, not done: cal show / contact show / system watch — confirmed to be exactly the three RPCs with no CLI coverage. And the update-exception item: a doc landed on HeadlessRunner, but UpdateEngine itself still needs one, and nunciod duplicates the same client-side GitHub logic.

Leaving open for the remainder.

Triaged against current `dev` and partially done in #427 (`3508b5e`). Each item was re-verified rather than assumed, since this issue predates a large refactor. **Done:** the runner's dead ephemeral store is gone. Removing it made construction infallible and sync, so `ephemeral*` became `connect*` across 39 call sites; the `runner_error_display` test went with it because `RunnerError` no longer exists (verified: zero remaining references). No other assertion was touched. **Already fine — this issue predates them:** `mail move|delete|flag|unflag|conflicts|resolve` all exist with callers, added in #417. **Still valid, not done:** `cal show` / `contact show` / `system watch` — confirmed to be exactly the three RPCs with no CLI coverage. And the update-exception item: a doc landed on `HeadlessRunner`, but `UpdateEngine` itself still needs one, and `nunciod` duplicates the same client-side GitHub logic. Leaving open for the remainder.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/nuncio#259