Loading…
Loading…
Real-time STT → translation → TTS pipeline with desktop UI, generated end-to-end on the Archiet pipeline as the first non-web stack renderer ship.
Files generated
71
Unit tests
88
cargo check
0 errors
Quality score
89/100
New genome primitives shipped
6
Stack
Tauri 2 + Rust + React + Vite
Sceptre is a desktop application that takes live speech, transcribes it, translates it across language pairs (with optional canonical lookup for fixed corpora — Bible verses, legal citations, drug names), and emits the translated text and synthesised speech to one or more output channels (presentation overlay, WebSocket fanout, file).
It was the forcing function for the realtime/desktop primitives in the Archiet genome schema — there was no way to express STT cascade, MT provider with backpressure, canonical-ID retrieval, or a presentation-window output channel before Sceptre. The pipeline now ships those primitives to every customer.
runtime_services
Long-running stateful services with FSM, health pulse, and fallback policy. Distinct from CRUD entities.
streaming_pipelines
Realtime dataflow (source → stages → sink) with backpressure, latency budgets, and partial/final emit semantics.
provider_adapters
Streaming/batch external providers (STT, MT, embedding, LLM, TTS) with auth model + circuit breaker.
retrieval_indexes
Canonical-ID-keyed corpora with parsers, embedding indexes, and confidence-aware rerankers.
output_channels
Per-partition realtime output (WebSocket fanout, presentation windows) with sync + reconnect contracts.
desktop_runtime
Tauri/Electron shell declaration. Presence flips the generator into desktop mode end-to-end.
Phase 0 — Validator + schema
Six new top-level keys added to the architectural-genome schema. Two-flow translation contract enforced by validator: pipelines marked "canonical_lookup" forbid MT providers, must resolve via retrieval_index.
Phase 1 — Renderer registration
Tauri+Rust renderer registered as the first non-web stack renderer. handles_enrichment=True skips Flask blueprints + persona service that would otherwise leak into the desktop tree.
Phase 2 — Templates + module wiring
27 Jinja2 templates: Cargo.toml, tauri.conf.json, Rust modules per IPC command / runtime service / provider adapter / pipeline / channel / retrieval index, React+Vite frontend, typed TS IPC client, placeholder icons.
Phase 4 — Dispatch wiring
_skip_frontend includes "tauri-rust" so Next.js doesn't inject a parallel app at /frontend. _render_shared returns empty for desktop stacks so Terraform / K8s / Helm / Heroku Procfile aren't generated for a desktop binary.
Phase 5 — Cargo compile-smoke
tests/test_tauri_rust_compile_smoke.py renders Sceptre to a temp dir, runs cargo check, asserts exit 0. Skips when cargo not on PATH.
Phase 7+ — V1 quality cascade
Sceptre quality score moved from 44 → 89 across PRs #176 → #185 → #186 → #188 → #189 by adding Tauri-aware scorer dimensions and fixing _is_python_stack so Tauri output stops getting Flask blueprints.
Stack-conditional generation gates (handles_enrichment, _skip_frontend, _render_shared) prevent web-stack assumptions from leaking into desktop output. Without them, Tauri ZIPs shipped with phantom Flask blueprints and a parallel Next.js app at /frontend.
YAML 1.1 silently coerces the bare key on: to Python True. Both renderer and validator now read transitions via state.get("transitions") or state.get("on") or state.get(True) so authors using either spelling get correct output.
The "two-flow translation contract" is enforced at validate-time, not codegen-time: pipelines with translation_mode="canonical_lookup" cannot use MT providers. The validator emits TWO_FLOW_VIOLATION errors before generation runs.
Quality scoring needs stack-aware dimensions. The original scorer penalised Tauri output for missing Flask routes. After Sceptre, scoring branches on stack family.
The Tauri+Rust renderer + realtime primitives ship in every Archiet workspace. Describe your pipeline (STT → MT → TTS or any other graph), pick a desktop or web target, and generate a buildable codebase.