Prototype a Rust Turbo voting frame in the live meeting UI
Implemented an opt-in proof of concept that embeds an interactive Rust-rendered Voteringer Turbo Frame in the real secretary ongoing-case page without reading or writing canonical voting state. The Axum service lives under services/rust_voting_poc, keeps fake per-case voting state in memory, renders Kaukus Tailwind markup, supports all six application languages, and demonstrates FOR/MOT voting, completion, disabled completed-state controls, reopening, and reset. Rails keeps proposals and speakers; in development the former combined right column becomes a Rails speaker frame plus the Rust voting frame. Existing Rails voting broadcasts target their old frame ID and cannot replace the Rust frame. Development workflow: tracked bin/dev generates a temporary Foreman Procfile that adds the Rust watcher while preserving each developer's ignored/custom Procfile.dev. The tracked .foreman formation explicitly enables the added process. The generated file also normalizes the local commands for Sidekiq 8 (`-r .`) and non-interactive Tailwind 4 watching (`--watch=always`) without modifying Procfile.dev. The Rust watcher uses the existing Ruby listen dependency, requires no global cargo-watch installation, incrementally rebuilds/restarts cargo run on source or manifest changes, and shuts down its child cleanly. A development/test-only same-origin Rails reverse proxy forwards the narrow PoC route allowlist to 127.0.0.1:3101; this is required because Turbo does not intercept cross-origin form submissions. The proxy explicitly skips CSRF only for this unauthenticated localhost demonstration. Production would route at the edge and requires real auth/authz/CSRF. Validation passed: 4 Rust unit tests; cargo fmt; cargo clippy with warnings denied; 6 Rails view/request examples; RuboCop on all changed Ruby/spec files; shell/Ruby syntax; git diff check. Real Chrome acceptance through the actual Rails development proxy verified frame loading, in-place FOR/MOT updates, completion, disabled controls, reset, stable top-level URL, and zero console/network errors. Watcher rebuild/restart was exercised successfully. A full timed bin/dev startup verified JavaScript, persistent Tailwind watch, Sidekiq boot, Rust startup/listening, and clean shutdown with no leaked processes.
Checklist
4 of 4 complete- Add an isolated Axum PoC service with fake interactive voting state and Turbo responses
- Embed the opt-in Rust voting frame in the real ongoing-case page without canonical writes
- Run the Rust service through bin/dev with automatic rebuild/restart and document setup
- Verify Rust tests, Rails view coverage, formatting, linting, and browser interaction
- Area
- Kaukus
- Kind
- Research
- Priority
- Medium
- Task ID
tsk_2jexax5dvg- Updated