Add authoritative recording status indicator #85

Merged
lost-rob0t merged 32 commits from agent/issue-28-recording-indicator into main 2026-08-22 22:38:42 +00:00
lost-rob0t commented 2026-08-22 21:35:32 +00:00 (Migrated from github.com)

Closes #28.

RAGE transaction starts from immutable main b798ab94e2c3ccc51ba723ee7f8a36352dfea4c9.

Result

Adds a daemon-authoritative, content-free recording indicator boundary with closed states for off, paused, recording, privacy, locked, overloaded, faulted, and unavailable. Recording is rendered only from a fresh successful daemon status response; disconnect/failure discards stale recording metadata.

Adds one-action stop/privacy controls that always re-query daemon authority, a directly consumable Qtile polling/action adapter, and a generic StatusNotifierItem presentation/action adapter. The UI does not own lifecycle, capture, policy, storage, provider, or transport authority. Issue #29 remains owner of authenticated ipc:// server transport.

Privacy/security

Status metadata is bounded to validated operational backend/source identifiers and aware last-capture timestamps. Failure reasons, screenshot/OCR content, titles, command lines, provider payloads, storage paths, and arbitrary exception text do not enter indicator presentation. Structural security tests prohibit capture/storage/provider/policy/lifecycle/subprocess/socket/zmq authority in the indicator modules.

RAGE evidence

Acceptance audit found presentation views without concrete Qtile/StatusNotifier action adapters. Test-only commit 2447933e46b6f3053ebecec9e5d3459732b160ee produced the intended RED in CI run 710: formatting, Ruff, ShellCheck, strict Pyright, and failure-propagation passed, then unit tests failed because the adapters were absent. Production commit 90311a3e2eeb272f702f8b9e9ea7cc2cd6effa4d added only the missing adapters.

A later verification-only formatting defect was fixed without changing behavior.

Verification

Exact final head 06816cc6abf8d45d6683eb98aafcd4d55ad07f00 passed CI run 717:

  • Checks Ubuntu 22.04: green
  • Checks Ubuntu 24.04: green
  • Canonical ./scripts/check: green
  • unit/contract/integration/security tests: green
  • static typing and security scans: green
  • failure-propagation: green

No Nix inputs changed, so no additional Nix dependency gate was required.

See docs/indicator.md and rage/issue-28-recording-indicator.org for the design and evidence record.

Closes #28. RAGE transaction starts from immutable main `b798ab94e2c3ccc51ba723ee7f8a36352dfea4c9`. ## Result Adds a daemon-authoritative, content-free recording indicator boundary with closed states for off, paused, recording, privacy, locked, overloaded, faulted, and unavailable. Recording is rendered only from a fresh successful daemon status response; disconnect/failure discards stale recording metadata. Adds one-action stop/privacy controls that always re-query daemon authority, a directly consumable Qtile polling/action adapter, and a generic StatusNotifierItem presentation/action adapter. The UI does not own lifecycle, capture, policy, storage, provider, or transport authority. Issue #29 remains owner of authenticated `ipc://` server transport. ## Privacy/security Status metadata is bounded to validated operational backend/source identifiers and aware last-capture timestamps. Failure reasons, screenshot/OCR content, titles, command lines, provider payloads, storage paths, and arbitrary exception text do not enter indicator presentation. Structural security tests prohibit capture/storage/provider/policy/lifecycle/subprocess/socket/zmq authority in the indicator modules. ## RAGE evidence Acceptance audit found presentation views without concrete Qtile/StatusNotifier action adapters. Test-only commit `2447933e46b6f3053ebecec9e5d3459732b160ee` produced the intended RED in CI run 710: formatting, Ruff, ShellCheck, strict Pyright, and failure-propagation passed, then unit tests failed because the adapters were absent. Production commit `90311a3e2eeb272f702f8b9e9ea7cc2cd6effa4d` added only the missing adapters. A later verification-only formatting defect was fixed without changing behavior. ## Verification Exact final head `06816cc6abf8d45d6683eb98aafcd4d55ad07f00` passed CI run 717: - Checks Ubuntu 22.04: green - Checks Ubuntu 24.04: green - Canonical `./scripts/check`: green - unit/contract/integration/security tests: green - static typing and security scans: green - failure-propagation: green No Nix inputs changed, so no additional Nix dependency gate was required. See `docs/indicator.md` and `rage/issue-28-recording-indicator.org` for the design and evidence record.
Sign in to join this conversation.
No description provided.