feat: voice-driven compliance console (opt-in)#21
Merged
Conversation
- TRUST.md: update headline test count from 632 → 706 (74 voice tests added), satisfies tests/test_integrity/test_doc_claims.py::test_root_trust_test_count - CHANGELOG.md: add [Unreleased] entry documenting the voice console feature, the SQLite check_same_thread change, and pointers to the spec/plan in docs/superpowers/ Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…AUDE.md - pyproject.toml: 1.8.0 → 1.9.0 - CHANGELOG.md: rename [Unreleased] → [1.9.0] — 2026-05-05 - docs/media/shasta-voice-demo.mp4: 60-second walkthrough demo - README.md: link the demo video from the Voice Console section - CLAUDE.md: broaden 'What is this?' to match actual scope (HIPAA + ISO 42001 + EU AI Act); add src/shasta/voice/ and src/shasta/dashboard/ to project layout; add voice install + run commands to the Commands section Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
oswin-mako
pushed a commit
to oswin-mako/shasta
that referenced
this pull request
May 7, 2026
Rebasing onto main (post voice-console PR transilienceai#21) brings in 74 new voice tests, pushing the total from 720 to 814. The ±50 integrity tolerance is exceeded at 94, so update the TRUST.md TL;DR bullet to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an optional voice-driven compliance console at
python -m shasta.voice. Users run a scan via the/scanClaude Code skill, then talk to their compliance posture across SOC 2 / ISO 27001 / HIPAA / ISO 42001 / EU AI Act. Voice handles read-side queries (findings, scores, controls, scans) plus light writes (risk-register operations). Heavy operations (scans, reports, Terraform, policy generation) stay in Claude Code skills — voice redirects to them.src/shasta/voice/(FastAPI sub-app, OpenAI Realtime API, React frontend)ShastaDB+ risk-register writes via existingsave_risk_itemspip install shasta[voice]extra; default install unchangedsrc/shasta/voice/Why a voice console
Compliance posture is a query-heavy workflow (status checks, drilldowns, "what's CC6.1 looking like?"). Voice is faster than scrolling dashboards for daily check-ins and exec briefs. The dashboard cards mount in response to the assistant's tool calls, so the screen tracks the conversation hands-free.
Architecture
The Store facade in
src/shasta/voice/store.pyis the only seam into Shasta core — it composes existingShastaDB,compliance.scorer,compliance.mapper, and the ISO/HIPAA equivalents. No new domain logic; no duplication of compliance scoring.What's in this PR
src/shasta/voice/— 14 modules + 14 tools acrossmodels.py,store.py,realtime_config.py,session.py,tools/*.py,app.py,cli.py,observability.pysrc/shasta/voice/web/— Vite + React + TypeScript + Zustand + Framer Motionsrc/shasta/voice/web/dist/— committed for zero-Node distribution (90 KB gzipped JS)tests/voice/— 74 tests, store + tool functions + endpoints + CLI; ~85% coveragepyproject.toml[voice]optional-dependency,force-includefor the React bundlesrc/shasta/db/schema.pycheck_same_thread=Falseon the SQLite connection (lets FastAPI share the connection across worker threads; behavior unchanged for the existing single-threaded dashboard).github/workflows/voice-bundle.yml— verifies the committed React bundle stays in sync withweb/src/README.md— Voice Console section.TRUST.md— test count 632 → 706 (74 voice tests added).CHANGELOG.md—[Unreleased]entry.docs/superpowers/specs/2026-05-05-shastavoice-design.md— design spec.docs/superpowers/plans/2026-05-05-shastavoice.md— implementation plan.How to test
Demo phrases that exercise the full surface:
ComplianceScorecardFindingsListcardFindingDetailcardMultiFrameworkScorecardControlSummarycardRiskListcardActionToastconfirms a new risk row/scan(proves the redirect rules work)Test plan
Cost note
OpenAI Realtime API: ~$0.06/min input, ~$0.24/min output. Light usage is a few cents per session. The README documents the per-minute cost so users can budget. Build + rehearsals across this PR's development consumed ~$25 in OpenAI charges.
References
docs/superpowers/specs/2026-05-05-shastavoice-design.mddocs/superpowers/plans/2026-05-05-shastavoice.md🤖 Generated with Claude Code