agent: lumotia-rebrand — fix QC blockers for phase 2
Phase 2 QC found three explicit blockers + a broader sweep needed:
Explicit (QC-named):
- crates/mcp/src/lib.rs:15 — SERVER_NAME public MCP wire identity
- crates/transcription/build.rs:59 — panic message prefix
- crates/llm/tests/content_tags_smoke.rs:7 — docstring -p flag
Swept (string literals + dev env vars + doc comments + test fixtures):
- crates/mcp/src/main.rs — eprintln log prefixes
- src-tauri/src/commands/diagnostics.rs — diagnostic filename + MAGNOTIA_VERSION
- src-tauri/src/commands/audio.rs — recording filename pattern lumotia-<secs>-...wav
- src-tauri/src/commands/fs.rs — test placeholder path
- crates/transcription/src/model_manager.rs — .lumotia-verified marker
- crates/storage/src/database.rs — lumotia-storage-ro-<pid> temp dirs + doc comments
- crates/cloud-providers/src/keystore.rs — LUMOTIA_API_KEY_<PROVIDER> env var
- crates/audio/src/{wav,decode}.rs — lumotia_test_* / lumotia_decode_* test fixtures
- crates/core/src/tuning.rs — LUMOTIA_INFERENCE_THREADS env var
- All MAGNOTIA_LLM_TEST_MODEL / MAGNOTIA_WHISPER_TEST_* env vars
- Doc comments referencing crate names
Excluded (intentional Phase 4/5 scope):
- magnotia_preferences, magnotia_history, magnotia_morning_triage_last_shown
DB setting keys (Phase 5 paths.rs migration)
- magnotia_startup tracing target (Phase 4)
- crates/core/src/paths.rs (Phase 5 wholesale rewrite + migration shim)
cargo build --workspace passes. cargo test --workspace: 330 pass, 0 fail.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -56,7 +56,7 @@ fn main() {
|
||||
|
||||
if target_os == "windows" {
|
||||
panic!(
|
||||
"magnotia-transcription: the `tokenizers` crate appears in Cargo.lock and this is a \
|
||||
"lumotia-transcription: the `tokenizers` crate appears in Cargo.lock and this is a \
|
||||
Windows build. Linking `whisper-rs-sys` + `tokenizers` in the same binary has \
|
||||
been a persistent MSVC C-runtime conflict (see Whispering v7.11.0). Route any \
|
||||
tokenizer usage through an out-of-process sidecar instead, or gate it off for \
|
||||
@@ -65,7 +65,7 @@ fn main() {
|
||||
}
|
||||
|
||||
println!(
|
||||
"cargo:warning=magnotia-transcription: `tokenizers` crate is in the dependency graph. \
|
||||
"cargo:warning=lumotia-transcription: `tokenizers` crate is in the dependency graph. \
|
||||
This build is non-Windows so the link will succeed, but Windows builds will panic \
|
||||
at build time per docs/whisper-ecosystem/brief.md item #6. Isolate tokenizer usage \
|
||||
in a sidecar before a Windows ship."
|
||||
|
||||
@@ -74,7 +74,7 @@ pub fn list_downloaded() -> Vec<ModelId> {
|
||||
/// For files that declare a `sha256` checksum we validate an existing
|
||||
/// complete file before skipping the download — a truncated or
|
||||
/// tampered file gets redownloaded automatically (pattern ported from
|
||||
/// `magnotia-llm`'s model_manager, item #8 in the Whisper ecosystem brief).
|
||||
/// `lumotia-llm`'s model_manager, item #8 in the Whisper ecosystem brief).
|
||||
pub async fn download(
|
||||
id: &ModelId,
|
||||
progress: impl Fn(DownloadProgress) + Send + 'static,
|
||||
@@ -113,7 +113,7 @@ pub async fn download(
|
||||
}
|
||||
|
||||
fn verified_manifest_path(dir: &Path) -> PathBuf {
|
||||
dir.join(".magnotia-verified")
|
||||
dir.join(".lumotia-verified")
|
||||
}
|
||||
|
||||
fn verified_manifest_matches(
|
||||
@@ -220,7 +220,7 @@ async fn download_file(
|
||||
// If we requested Range but the server returned 200 (full file), the
|
||||
// server does not support resume. Rather than blindly appending a
|
||||
// full file on top of our partial bytes (which would produce a
|
||||
// corrupt result), restart cleanly. This mirrors the magnotia-llm
|
||||
// corrupt result), restart cleanly. This mirrors the lumotia-llm
|
||||
// ResumeUnsupported branch — item #8 of the brief.
|
||||
//
|
||||
// For the non-resume path, we still have to validate the status:
|
||||
|
||||
@@ -2,20 +2,20 @@
|
||||
//! Reports cold-load time, transcribe time, RTF, peak RSS.
|
||||
//!
|
||||
//! Gated on env vars so it never runs in CI without setup:
|
||||
//! MAGNOTIA_WHISPER_TEST_MODEL=/path/to/ggml-tiny.bin
|
||||
//! MAGNOTIA_WHISPER_TEST_AUDIO=/path/to/jfk.wav
|
||||
//! LUMOTIA_WHISPER_TEST_MODEL=/path/to/ggml-tiny.bin
|
||||
//! LUMOTIA_WHISPER_TEST_AUDIO=/path/to/jfk.wav
|
||||
|
||||
use std::env;
|
||||
use std::time::Instant;
|
||||
|
||||
#[test]
|
||||
fn jfk_transcription_benchmark() {
|
||||
let Ok(model_path) = env::var("MAGNOTIA_WHISPER_TEST_MODEL") else {
|
||||
eprintln!("MAGNOTIA_WHISPER_TEST_MODEL not set — skipping");
|
||||
let Ok(model_path) = env::var("LUMOTIA_WHISPER_TEST_MODEL") else {
|
||||
eprintln!("LUMOTIA_WHISPER_TEST_MODEL not set — skipping");
|
||||
return;
|
||||
};
|
||||
let Ok(audio_path) = env::var("MAGNOTIA_WHISPER_TEST_AUDIO") else {
|
||||
eprintln!("MAGNOTIA_WHISPER_TEST_AUDIO not set — skipping");
|
||||
let Ok(audio_path) = env::var("LUMOTIA_WHISPER_TEST_AUDIO") else {
|
||||
eprintln!("LUMOTIA_WHISPER_TEST_AUDIO not set — skipping");
|
||||
return;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
//! Thread-count scaling sweep for Whisper Tiny.
|
||||
//! Runs the JFK clip at n_threads = 1, 2, 4, 6, 8, 12, prints RTF tables.
|
||||
//! Env-gated by `MAGNOTIA_WHISPER_TEST_MODEL` + `MAGNOTIA_WHISPER_TEST_AUDIO`.
|
||||
//! Env-gated by `LUMOTIA_WHISPER_TEST_MODEL` + `LUMOTIA_WHISPER_TEST_AUDIO`.
|
||||
//!
|
||||
//! Now prints multiple panels driven by `MAGNOTIA_POWER_STATE_OVERRIDE` so
|
||||
//! Now prints multiple panels driven by `LUMOTIA_POWER_STATE_OVERRIDE` so
|
||||
//! the helper's predicted thread count for each (power, GPU) combination
|
||||
//! can be compared against the empirical RTF data.
|
||||
|
||||
@@ -15,10 +15,10 @@ use whisper_rs::{FullParams, SamplingStrategy, WhisperContext, WhisperContextPar
|
||||
|
||||
#[test]
|
||||
fn whisper_thread_count_sweep() {
|
||||
let Ok(model_path) = env::var("MAGNOTIA_WHISPER_TEST_MODEL") else {
|
||||
let Ok(model_path) = env::var("LUMOTIA_WHISPER_TEST_MODEL") else {
|
||||
return;
|
||||
};
|
||||
let Ok(audio_path) = env::var("MAGNOTIA_WHISPER_TEST_AUDIO") else {
|
||||
let Ok(audio_path) = env::var("LUMOTIA_WHISPER_TEST_AUDIO") else {
|
||||
return;
|
||||
};
|
||||
|
||||
@@ -71,7 +71,7 @@ fn whisper_thread_count_sweep() {
|
||||
);
|
||||
|
||||
// Four panels: CPU and GPU axes for the predicted-helper-pick column,
|
||||
// crossed with AC and battery via MAGNOTIA_POWER_STATE_OVERRIDE.
|
||||
// crossed with AC and battery via LUMOTIA_POWER_STATE_OVERRIDE.
|
||||
let panels = [
|
||||
("AC, CPU", "ac", false),
|
||||
("AC, GPU (Vulkan)", "ac", true),
|
||||
@@ -80,11 +80,11 @@ fn whisper_thread_count_sweep() {
|
||||
];
|
||||
|
||||
for (label, power, gpu_offloaded_for_helper) in panels {
|
||||
env::set_var("MAGNOTIA_POWER_STATE_OVERRIDE", power);
|
||||
env::set_var("LUMOTIA_POWER_STATE_OVERRIDE", power);
|
||||
let helper_pick = inference_thread_count(Workload::Whisper, gpu_offloaded_for_helper);
|
||||
run_sweep_panel(label, helper_pick, &ctx, &samples, audio_secs, &targets);
|
||||
}
|
||||
env::remove_var("MAGNOTIA_POWER_STATE_OVERRIDE");
|
||||
env::remove_var("LUMOTIA_POWER_STATE_OVERRIDE");
|
||||
}
|
||||
|
||||
fn run_sweep_panel(
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
//! Smoke test: whisper-rs 0.16 loads a GGUF model, transcribes silence, and
|
||||
//! accepts set_initial_prompt without panicking.
|
||||
//!
|
||||
//! Runs only when `MAGNOTIA_WHISPER_TEST_MODEL` is set to the path of a
|
||||
//! Runs only when `LUMOTIA_WHISPER_TEST_MODEL` is set to the path of a
|
||||
//! ggml/gguf whisper model on disk. Otherwise the test exits quiet.
|
||||
|
||||
use std::env;
|
||||
|
||||
#[test]
|
||||
fn whisper_rs_smoke_loads_and_transcribes() {
|
||||
let model_path = match env::var("MAGNOTIA_WHISPER_TEST_MODEL") {
|
||||
let model_path = match env::var("LUMOTIA_WHISPER_TEST_MODEL") {
|
||||
Ok(p) => p,
|
||||
Err(_) => {
|
||||
eprintln!("MAGNOTIA_WHISPER_TEST_MODEL not set — skipping");
|
||||
eprintln!("LUMOTIA_WHISPER_TEST_MODEL not set — skipping");
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user