Implement CLI controls and query commands #83

Merged
lost-rob0t merged 51 commits from agent/issue-27-cli-controls into main 2026-08-22 21:12:07 +00:00
lost-rob0t commented 2026-08-22 19:36:00 +00:00 (Migrated from github.com)

Closes #27.

RAGE issue #27 was consumed from immutable main 109834de2453f86a70559c12bd182a409ab310eb.

Scope

  • replace the old local desktop-probe status behavior with a typed daemon-authoritative CLI/client contract;
  • add lifecycle controls start, pause, resume, stop, status, privacy-on, and privacy-off;
  • add cited ask, timeline, and search commands with explicit bounded time filters and machine-readable output;
  • add local config validate plus typed providers, health, and storage stats diagnostics;
  • use stable typed outcomes/exit codes, opaque request IDs, finite deadlines, and urgent priority for stop/privacy controls;
  • require authoritative lifecycle state on successful control/status responses and require off specifically for successful stop;
  • keep shell completion static and content-free;
  • document the CLI contract and enforce structural privacy boundaries in security tests.

IPC ownership

Issue #29 remains the owner of authenticated owner-only daemon IPC/server binding, peer authorization, endpoint permissions, and server-side request scheduling. #27 intentionally does not create an unauthenticated interim transport. Until #29 lands, the default daemon client fails closed as daemon-unavailable; tests inject the typed DaemonClient port.

RAGE/TDD evidence

The full evidence chain, including rejected formatting-only REDs, accepted behavioral REDs, architecture decisions, and acceptance mapping, is recorded in rage/issue-27-cli-controls.org.

Acceptance-audit REDs proved two additional fail-open gaps before finalization:

  • malformed command/query payload combinations;
  • lifecycle commands accepting a content-free SUCCESS without authoritative state.

Both are now closed in production code.

Final exact-head validation

Exact head 05edb545891e155b03e12cb36b860016492724d4, CI run 32598782209:

  • Ubuntu 22.04: green;
  • Ubuntu 24.04: green;
  • canonical ./scripts/check: green;
  • failure propagation: green;
  • strict Pyright: 0 errors / 0 warnings;
  • 660 unit tests passed;
  • 6 contract tests passed;
  • 37 integration tests passed;
  • 59 security tests passed;
  • repository security/policy scans passed.

nix flake check was not executable in this worker runtime because Nix is unavailable; no Nix result is claimed. NixOS packaging/release behavior is owned by later issue #40.

Closes #27. RAGE issue #27 was consumed from immutable main `109834de2453f86a70559c12bd182a409ab310eb`. ## Scope - replace the old local desktop-probe `status` behavior with a typed daemon-authoritative CLI/client contract; - add lifecycle controls `start`, `pause`, `resume`, `stop`, `status`, `privacy-on`, and `privacy-off`; - add cited `ask`, `timeline`, and `search` commands with explicit bounded time filters and machine-readable output; - add local `config validate` plus typed `providers`, `health`, and `storage stats` diagnostics; - use stable typed outcomes/exit codes, opaque request IDs, finite deadlines, and urgent priority for stop/privacy controls; - require authoritative lifecycle state on successful control/status responses and require `off` specifically for successful `stop`; - keep shell completion static and content-free; - document the CLI contract and enforce structural privacy boundaries in security tests. ## IPC ownership Issue #29 remains the owner of authenticated owner-only daemon IPC/server binding, peer authorization, endpoint permissions, and server-side request scheduling. #27 intentionally does not create an unauthenticated interim transport. Until #29 lands, the default daemon client fails closed as `daemon-unavailable`; tests inject the typed `DaemonClient` port. ## RAGE/TDD evidence The full evidence chain, including rejected formatting-only REDs, accepted behavioral REDs, architecture decisions, and acceptance mapping, is recorded in `rage/issue-27-cli-controls.org`. Acceptance-audit REDs proved two additional fail-open gaps before finalization: - malformed command/query payload combinations; - lifecycle commands accepting a content-free `SUCCESS` without authoritative state. Both are now closed in production code. ## Final exact-head validation Exact head `05edb545891e155b03e12cb36b860016492724d4`, CI run `32598782209`: - Ubuntu 22.04: green; - Ubuntu 24.04: green; - canonical `./scripts/check`: green; - failure propagation: green; - strict Pyright: 0 errors / 0 warnings; - 660 unit tests passed; - 6 contract tests passed; - 37 integration tests passed; - 59 security tests passed; - repository security/policy scans passed. `nix flake check` was not executable in this worker runtime because Nix is unavailable; no Nix result is claimed. NixOS packaging/release behavior is owned by later issue #40.
Sign in to join this conversation.
No description provided.