Repository navigation
Voice roster reads: sweep, digest, last reply, screen (WI-1268) - #970
Conversation
…n (WI-1268) Checkpoint of the paused WI-1268 worker; its own commit was refused by the git guard. Unverified: gates not run on this commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sweep_args borrowed its argument mutably while reassigning it, and the call site passed a String where the signature takes &str. Clone the object instead, and assert the loop test against the clamped arguments so session.sweep is the one read that is rewritten.
Review — WI-1268 voice roster reads (head 93d73f7)Reviewed the diff in a detached checkout of that SHA; did not touch the author's worktree or the dirty checkout on wi-1044. What checks out:
Blocker: the screen-lines clamp drops the screen whenever the number is not an integerlet lines = object
.get("screen_lines")
.and_then(Value::as_u64)
.unwrap_or(0)
.min(5);
Use blockers (head 93d73f7) |
Missing, fractional or negative screen_lines now clamps to the speakable default of 5 instead of 0, which asked for no screen at all; whole-number floats are accepted. Fixes the review blocker on #970. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Re-review — head 199ec23The blocker from the previous review is fixed. Verified: no blockers (head 199ec23) |
What
The voice assistant can read the session roster.
session.sweepis the roster question ("what's going on", "what needs me"); a named session goes tosession.digest,session.last_reply, orsession.screen. All four are curated reads with no approval.list_sessionsstays a bounded name/role lookup (≤32) and spells a non-worker asname (role), so "oversight" resolves. The sweep the assistant actually runs is forced to digest mode withscreen_linesclamped to 5.Why
A spoken "what's going on" was answered from an unbounded session list or a raw tail, and never saw the blocked report, the last reply, or the screen. WI-1268.
Does not reimplement WI-1266 (session.list pagination), which is PR #968. This branch does not depend on it: the curated tools pass ids through to core, and the engine's own lookup still wants a UUID.
Closes nothing on GitHub; the item is WI-1268 in Vogt.
Verification
uv run pytest,uv run mypy,uv run ruff check .,uv run ruff format --check .uv run python scripts/check_docs.pyweb/):pnpm typecheck,pnpm test,pnpm test:browser(Playwright)engine/):cargo fmt --all -- --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test -p vogt-engine-server --lib assistant::testsAlso
uv run pytest tests/test_voice_capabilities.py --no-cov(4 passed). Fullcargo test --workspacewas not run; the assistant lib tests (78) were.Docs
docs/ENGINE.md§6.5.1: the four reads are Voice-readable, andlist_sessionsis the bounded name/role lookup.