Skip to content

QVAC-27853 feat(benchmarks): Jetson and Strix lanes, Speech Bench hub with task pages, machine dashboards - #411

Merged
GustavoA1604 merged 24 commits into
masterfrom
QVAC-27853/jetson-strix-lanes
Nov 6, 2026
Merged

GustavoA1604 merged 24 commits into
masterfrom
QVAC-27853/jetson-strix-lanes

Conversation

@Zbig9000

@Zbig9000 Zbig9000 commented Nov 3, 2026 •

Copy link
Copy Markdown

Overview

Follow-up to #410 in three parts.

Jetson Orin Nano (qvac-dev-linux-arm64) lane, and the Strix Halo moves to qvac-dev-strix-1

  • lib.sh builds only the cmake targets of the selected families (plus whisper-cli), so a host whose SKIP_FAMILIES removes the MOSS families never compiles moss-cli.
  • The cmake generator falls back to Unix Makefiles where ninja is missing (qvac-dev-strix-1 has none).
  • EVICT_PAGE_CACHE=1 drops the model files from the page cache before every family, through a new evict subcommand of prepare-derived.py (posix_fadvise DONTNEED); the Jetson's CUDA allocations fail while the page cache is full.
  • CMAKE_PREFIX_PATH in config.env is passed to the ggml and engine configures and is part of the build signature: the Jetson has no Vulkan SDK and no root, so SPIRV-Headers and Vulkan-Headers live under the bench home.
  • qvac-dev-strix-1 replaces qvac-dev-strix-0 (the same hardware) as the one Strix Halo of the weekly set, under the plain name "Strix Halo"; the campaign's Strix Halo rows go with it.
  • config.example.env and the skill's machine table document the Jetson and the Strix Halo.

Speech Bench hub with task pages and per-machine dashboards, in the layout of the approved Speech Bench report

  • A hub page lists, per task (TTS and voice cloning, ASR, music), every machine with its models, backends and other engines, linking to that machine's task page, then the quality flags, the engines and how the bench runs. build-landing.py renders it from hub.json.
  • The task pages follow the approved report's per-machine pages: one section per model with a horizontal speed chart per backend and input in engine colors, a details panel per chart (exact values, precision per row, the competitor ÷ QVAC time ratio with its qualifier, notes and sources) and what was not measured there, and why. task_views.py renders them from each machine's runs.json and coverage.json, with dashboard/task.css; build-landing.py embeds all of them in the hub as views reached at the hub's link plus #<machine>-<task> (for example #dgx-spark-tts), so they need no artifact of their own and are visible to everyone who can open the hub.
  • One Dashboard artifact per machine runs the same page (dashboard/index.html, app.js, app.css, adapted from the approved report's dashboard script): an overview (status, a summary of the week, quality flags, which models ran on which backend, gaps, engines, rules), a tab per task with one section per model (a speed chart per backend and input; weekly charts hold QVAC's variants, campaign charts hold QVAC and transcribe.cpp, audio.cpp, LocalAI parakeet.cpp or acestep.cpp in engine colors, with details, time ratios and sources), a week-over-week line per backend, and a runs and coverage tab.
  • build-dashboard-data.py writes per host the six files a dashboard reads (runs, history, coverage, engines, machine, commentary) and hub.json. Campaign rows keep their own build and date and never share a chart with weekly rows; a competitor without a ratio (OOM in the campaign) is a failed row, and a competitor row records its precision as not recorded instead of QVAC's quantization. Two campaign notes in comparisons.json that were cut at 400 characters are complete again. engines.json lists the engines, dashboards.json the links.
  • The skill's publish step and the Monday refresh upload each machine's changed files to its dashboard and republish the hub.

fetch-registry.js discards a stale .part left by a stopped download, and downloads beside it when that file belongs to another user (the shared store is sticky).

Additional information

  • test-desktop-weekly.sh covers the selected-family target list, the generator fallback, the evict subcommand, the cmake prefixes in the build signature, the partial-download handling, the data builder, the hub and the task pages (27 checks pass; it also syntax-checks the dashboard script).
  • Rehearsal runs with these tools are on the dashboards: DGX Spark 40/40, RTX 5090 60/60, Strix Halo 40/40, Mac mini 34/34, Jetson 34/39. The five Jetson Vulkan cells finish their measurement and then segfault at process exit on the Tegra driver (exit 139); the fix is QVAC-27853 fix(vulkan): destroy devices and instance before driver unload qvac-ext-ggml#148, after which the engine needs a ggml-speech registry cut.

🤖 Generated with Claude Code

Requirements

  • I have read and agree with the contributing guidelines
  • AI usage disclosure: YES. Claude Code wrote the change, the tests and this description.

Zbig9000 and others added 2 commits November 3, 2026 15:45
Build only the cmake targets of the selected families (plus whisper-cli), so a host that skips the MOSS families never compiles moss-cli; fall back to Unix Makefiles where ninja is missing (qvac-dev-strix-1); add EVICT_PAGE_CACHE, which drops the model files from the page cache before every family on boards whose CUDA allocations fail while the cache is full (Jetson Orin), via a new evict subcommand of prepare-derived.py; document the Jetson settings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000
Zbig9000 requested review from a team as code owners November 3, 2026 14:47
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Review Status

Current Status: ❌ PENDING
Approvals so far: none

Pending reviews: Needs 1 Management or Team Lead, and 1 more from Management, Team Lead, or Member.

The weekly results move from one HTML page to one Dashboard artifact per
task (ASR, TTS with cloning, Music) behind a landing page, following the
fabric-llm engine bench: every dashboard shows a card per machine and
backend with the newest result of each model, the campaign comparison
against other engines coloured per engine, the week-over-week line per
lane, and the run log, with every number readable in the Sources panel.

- build-dashboard-data.py turns the stored summaries and comparisons.json
  into the files the dashboards attach (latest, weekly, campaign, runs)
  with speeds, GiB, short labels, the family order and a current flag
- dashboard/index.html is the page every task dashboard runs; the task,
  machines, backends and engines come from the data
- build-landing.py writes the landing page from the summaries and the
  links in dashboards.json; build-artifact.py stays as the offline report
- fetch-registry.js discards a stale .part left by a stopped download,
  and downloads beside it when the file belongs to another user
- the speech-bench skill and the README describe the publish procedure
  over the dashboards; tests for the data builder, the landing page and
  the partial-download handling

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000 Zbig9000 changed the title QVAC-27853 feat(benchmarks): Jetson and second Strix lanes for the weekly bench QVAC-27853 feat(benchmarks): Jetson and Strix lanes, task dashboards for the weekly bench Nov 3, 2026
freddy311082
freddy311082 previously approved these changes Nov 3, 2026
freddy311082 and others added 2 commits November 3, 2026 15:48
CMAKE_PREFIX_PATH in config.env is passed to the ggml and engine
configures and is part of the build signature. The Jetson has no Vulkan
SDK and no root, so its Vulkan backend stopped at find_package of
SPIRV-Headers; the headers are installed under the bench home instead
and the key points the build at them. The skill's machine table gains
the Jetson and the second Strix Halo.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The weekly results follow the Speech Bench report the team approved: a hub
that lists, per task, every machine with a link into its dashboard, and one
Dashboard artifact per machine with an overview, a tab per task with a speed
chart per model, backend and input, a week-over-week line per backend, and a
runs and coverage tab.

- build-dashboard-data.py writes per host the six files a dashboard reads
  (runs, history, coverage, engines, machine, commentary) and hub.json;
  weekly rows carry short variant labels, campaign rows sit in their own
  charts with one QVAC row each, and a competitor without a ratio (OOM) is
  a failed row instead of borrowing QVAC's time
- the commentary gives each dashboard a summary of the week: the fastest
  cell per task, the campaign ratios, failed cells, moves over 5% against
  the last full run, coverage and pins
- dashboard/ holds the page every machine dashboard runs, adapted from the
  approved report's dashboard script, and the hub's stylesheet;
  engines.json lists the engines and dashboards.json the links
- build-landing.py renders the hub from hub.json
- the skill, the README and the tests follow the new layout, and the suite
  syntax-checks the dashboard script

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Zbig9000 Zbig9000 changed the title QVAC-27853 feat(benchmarks): Jetson and Strix lanes, task dashboards for the weekly bench QVAC-27853 feat(benchmarks): Jetson and Strix lanes, Speech Bench hub and machine dashboards Nov 4, 2026
@Zbig9000
Zbig9000 requested a review from freddy311082 November 4, 2026 15:57
freddy311082
freddy311082 previously approved these changes Nov 4, 2026
qvac-dev-strix-0 and qvac-dev-strix-1 are the same hardware, and the
results showed both as "Strix Halo" and "Strix Halo (1)". The weekly set
keeps qvac-dev-strix-1, which has the complete run, under the plain name
"Strix Halo"; the campaign's Strix Halo rows go with it, and strix-0 is
no longer a dashboard, a hub entry or a collected host. The skill and the
README say which box it is and that strix-0 is retired.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The approved report opens a task page per machine and task from the hub:
one section per model with a speed chart per backend and input, a details
panel per chart (exact values, precision per row, the competitor-over-QVAC
time ratio, notes and sources) and what was not measured there. task_views.py
renders the same pages from each machine's runs.json and coverage.json, and
build-landing.py embeds them in the hub as views reached at the hub's link
plus #<machine>-<task>, so they need no artifact of their own and share the
hub's audience.

Campaign competitor rows no longer carry QVAC's quantization as their
precision, and two campaign notes in comparisons.json that were cut at 400
characters are complete again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Zbig9000 Zbig9000 changed the title QVAC-27853 feat(benchmarks): Jetson and Strix lanes, Speech Bench hub and machine dashboards QVAC-27853 feat(benchmarks): Jetson and Strix lanes, Speech Bench hub with task pages, machine dashboards Nov 4, 2026
mexxik
mexxik previously approved these changes Nov 5, 2026
…he weekly matrix

Thirteen new families: Parakeet Realtime EOU 120M, upstream Whisper small through
whisper-cli, the ASR models on the 160.6 s multi-speaker ABCBA clip (no reference
transcript, so no WER), Chatterbox Turbo, Chatterbox Multilingual and CosyVoice3
cloning the JFK clip, Parler-TTS mini and Indic Parler-TTS. A family names its own
input in "scenario" so the report keeps every input in its own chart, and a
provision entry may link a file under another name (CosyVoice3 requires voice.gguf
even when cloning).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
mexxik
mexxik previously approved these changes Nov 5, 2026
… pages

import-report.py turns the saved task pages of a comparison report into report-rows.json
(rows in the shape of runs.json, comparison set "report", plus its not-measured lists as
coverage cells). build-dashboard-data.py reads that file next to the summaries folder,
the task pages and the machine dashboards show the report charts between the weekly and
the campaign ones, never mixed, and the report's QVAC-only timings stay a list.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@GustavoA1604 GustavoA1604 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 170 (if row.get("task") == "TTS cloning":)

This labels cosyvoice3-clone as including model load and reference encoding, although its native benchmark excludes both. The dashboard and task pages therefore misrepresent the measured latency. Apply TIMING_CLONING only to time-wrapped cloning, and add a native-cloning test.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 636 (by_host = group_by_host(summaries))

Retaining historical summaries as documented leaves both qvac-dev-strix-0 and qvac-dev-strix-1 in the hub, producing an extra obsolete machine and three task pages despite the intended single Strix Halo. Filter the retired host from current views or explicitly consolidate its history. Add a test containing both host names.

…t of the hub

TIMING_CLONING (process incl. load and reference encoding) now applies only to
time-wrapped cloning families; the native CosyVoice3 bench keeps the inference-only
scope. Summaries of a retired host (qvac-dev-strix-0) are skipped so the hub shows
one Strix Halo even when its old summaries are still stored.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000

Zbig9000 commented Nov 5, 2026

Copy link
Copy Markdown
Author

Both review findings are addressed in a4e6d98:

  • timing_of applies the "fresh process incl. load and reference encoding" scope only to time-wrapped cloning families; the native CosyVoice3 bench keeps "inference only", with a test for both kinds (test_only_time_wrapped_cloning_includes_load_and_reference_encoding).
  • load_summaries skips RETIRED_HOSTS (qvac-dev-strix-0), so the hub shows one Strix Halo even when the old summaries are still stored; test test_retired_hosts_are_left_out_of_the_summaries holds both host names. README and the skill say so.

🤖 Addressed by Claude Code

Zbig9000 and others added 2 commits November 5, 2026 17:44
Families may name another engine (engine, platform, backends): weekly.sh
skips a family on the other platforms, the driver skips the other
backends and resolves an absolute or ${BENCH_HOME} binary, and the
dashboard builder puts the rows in the chart of the QVAC family with the
same model, input and timing scope. parakeet-mlx and mlx-whisper run on
the Mac Studio Metal backend through mlx-bench.py (pinned Hugging Face
snapshots, model loaded once, soundfile decoding outside the timed
region, the driver's bench JSON).

build-highlights.py renders the charts listed in highlights.json as one
page of cards (QVAC against the other engines of each chart) for blog
posts and updates; a card without another engine is left out and named.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…c Studio

mlx-bench.py gains the mlx-audio engines: Nemotron 3.5 ASR Streaming
0.6B decoded offline with the model loaded once (native bench JSON), and
Chatterbox Turbo synthesized once into the driver's WAV with the
conversion's built-in voice at a fixed seed (time-wrapped family), both
announcing the Metal backend to the driver. Three families, the engine
entry, the highlights cards and the docs follow.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000

Zbig9000 commented Nov 5, 2026

Copy link
Copy Markdown
Author

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 170 (if row.get("task") == "TTS cloning":)

This labels cosyvoice3-clone as including model load and reference encoding, although its native benchmark excludes both. The dashboard and task pages therefore misrepresent the measured latency. Apply TIMING_CLONING only to time-wrapped cloning, and add a native-cloning test.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 636 (by_host = group_by_host(summaries))

Retaining historical summaries as documented leaves both qvac-dev-strix-0 and qvac-dev-strix-1 in the hub, producing an extra obsolete machine and three task pages despite the intended single Strix Halo. Filter the retired host from current views or explicitly consolidate its history. Add a test containing both host names.

Both findings are addressed in a4e6d98 (branch head is now 46f10f0, which keeps the fixes).

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 170 (if row.get(“task”) == “TTS cloning”:)
This labels cosyvoice3-clone as including model load and reference encoding, although its native benchmark excludes both. The dashboard and task pages therefore misrepresent the measured latency. Apply TIMING_CLONING only to time-wrapped cloning, and add a native-cloning test.

Fixed: timing_of applies the “fresh process incl. load and reference encoding” scope only when the cloning family is time-wrapped; native cloning (cosyvoice3-clone) keeps the “inference only” scope of its bench. Test test_only_time_wrapped_cloning_includes_load_and_reference_encoding covers both families. No published page needed a rebuild yet: the Mac and Linux hosts have no CosyVoice weekly rows until Sunday.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 636 (by_host = group_by_host(summaries))
Retaining historical summaries as documented leaves both qvac-dev-strix-0 and qvac-dev-strix-1 in the hub, producing an extra obsolete machine and three task pages despite the intended single Strix Halo. Filter the retired host from current views or explicitly consolidate its history. Add a test containing both host names.

Fixed: RETIRED_HOSTS = ("qvac-dev-strix-0",) and current_summary_paths drop the retired host’s summaries at load time, so the hub shows one Strix Halo (strix-1) and three task pages for it; the strix-0 files stay in the history folder for the record. Test test_retired_hosts_are_left_out_of_the_summaries loads both host names and asserts only strix-1 survives. README and the skill document the constant.

@Zbig9000

Zbig9000 commented Nov 5, 2026

Copy link
Copy Markdown
Author

/review

mexxik
mexxik previously approved these changes Nov 5, 2026
…verage gaps

mlx-bench.py's TTS engine is now generic (any mlx-audio text-to-speech
model, with reference audio resampled to the model's rate and per-family
generate options) and gains a music engine for MiniMax Music3. Audio8
synthesis and JFK cloning, MOSS-TTS v1.5 and MiniMax Music3 join the
Mac Studio families; the MLX conversions live once under models/mlx/,
shared by the families of one model.

engines.json entries may declare not_measured gaps per host; the
mlx-audio entry lists the models no MLX engine can run on the Mac, and
the dashboard builder turns them into coverage cells. Coverage gaps are
now per stored (backend, family) cell across the stored runs instead of
the newest run's family list, which mislabelled partial manual runs.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Zbig9000 and others added 5 commits November 5, 2026 23:44
…e Mac Studio

fluidaudio-bench/ is a Swift package that drives FluidInference/FluidAudio
(pinned by commit) the way the native QVAC benches run: Core ML models
loaded once, the clip transcribed in process after warm-ups, the driver's
bench JSON written. Four families run its Parakeet TDT 0.6B v3 and
Parakeet Unified English 0.6B conversions with the encoder on the ANE,
in the Metal lane of the Mac Studio beside the QVAC rows; the engine
entry lists what FluidAudio cannot cover (streaming-only Nemotron and
EOU, no Whisper, no matrix TTS model).

install.sh records the scheduler's pid itself instead of racing the
scheduler for it, which made the shell suite's fallback check flaky.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Four -coreml twin families (Parakeet TDT, Unified, EOU, Nemotron on the
JFK clip) run the engine's Core ML encoder sidecar on the Apple Neural
Engine through the driver's existing comparison: the sidecar is exported
once from the GGUF with the Python named by COREML_PYTHON, the bench runs
with --require-coreml and again forced to ggml, and the row keeps the
forced-ggml time. Darwin engine builds now enable PARAKEET_COREML, which
is part of the build signature. The summarizer carries the encoder
backend and the baseline time into the rows.

minimax-music3-q8_0 renders the 30 s instrumental request with
mm3-replay from a GGUF pair prepared by prepare-minimax.py elsewhere and
placed in the store by hand (provision kind "prepared"); the driver gains
the ${SCRATCH_DIR} placeholder for benches that write into a directory.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…on highlights

The Parakeet EOU bench writes a token's raw control byte into its
transcript on the long clip, which jq refuses; the driver now strips the
bytes JSON forbids in strings before it parses a native bench file.

The highlights page draws every QVAC variant of a chart (Metal beside the
Core ML encoder) with the other engines, and the Mac Studio gets the JFK
Parakeet card. The MiniMax texts no longer say the row stands alone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The Parakeet EOU bench writes raw tabs and control bytes into its
transcript on the long clip; stripping single byte ranges left jq still
refusing the file, so the driver now re-serializes a native bench file
with Python's tolerant JSON loader before anything parses it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000
Zbig9000 requested a review from mexxik November 6, 2026 10:19

@GustavoA1604 GustavoA1604 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[medium] scripts/benchmarks/desktop-weekly/lib.sh — line 483 (if family_runs_on_backend "$1" "$2"; then)

Metal-only families are skipped on CPU, but summarize.collect_rows() still creates every backend × family pair. On a Mac running cpu,metal, those skipped cells become not-run failures and mark an otherwise successful run partial. Apply the same backend filter when collecting summary rows, and add a mixed-backend regression test.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 267 ("group": f"{host}|{row['backend']}|{model}|{task}|{scenario}|weekly")

Include timing_class in this grouping key. On Mac Studio Metal, whisper-small includes startup and model loading, while mlx-whisper times inference after loading. Their matching keys put them into one chart and produce a misleading comparison ratio. The ABCBA pair has the same issue. Add tests confirming these timing scopes stay separate.

Zbig9000 and others added 3 commits November 6, 2026 12:44
…on the Mac Studio

Adds the sidecar provision kind to fetch-models.sh (exported once from the
GGUF with the engine's exporter under COREML_PYTHON), builds the Darwin
engine with TTS_CPP_COREML, lets the driver compare Core ML against the
forced-ggml baseline for families without a reference transcript, and adds
the ABCBA Core ML twins plus the Supertonic 3 and Audio8 Core ML families.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…by timing scope

summarize.collect_rows now applies the same backend filter as the runner, so
a Metal-only family no longer shows up as a not-run cell on CPU and marks the
run partial. The weekly chart group key carries the timing class, so a
fresh-process QVAC row (whisper-cli) and an in-process competitor row
(mlx-whisper) are never drawn in one chart with a ratio.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Zbig9000

Zbig9000 commented Nov 6, 2026

Copy link
Copy Markdown
Author

[medium] scripts/benchmarks/desktop-weekly/lib.sh — line 483 (if family_runs_on_backend "$1" "$2"; then)

Metal-only families are skipped on CPU, but summarize.collect_rows() still creates every backend × family pair. On a Mac running cpu,metal, those skipped cells become not-run failures and mark an otherwise successful run partial. Apply the same backend filter when collecting summary rows, and add a mixed-backend regression test.

[medium] scripts/benchmarks/desktop-weekly/build-dashboard-data.py — line 267 ("group": f"{host}|{row['backend']}|{model}|{task}|{scenario}|weekly")

Include timing_class in this grouping key. On Mac Studio Metal, whisper-small includes startup and model loading, while mlx-whisper times inference after loading. Their matching keys put them into one chart and produce a misleading comparison ratio. The ABCBA pair has the same issue. Add tests confirming these timing scopes stay separate.

Both addressed in d6b1dd7.

lib.sh:483 / summarize rows. collect_rows() now applies the same backend filter as the runner (family_runs_on_backend), so a Metal-only family is no longer an expected cell on CPU. Regression test test_a_metal_only_family_is_not_expected_on_the_other_backends runs a cpu,metal matrix and checks the counts come out 3 expected, 2 ok, 1 failed with only the real CPU gap in the problem list.

build-dashboard-data.py:267 / grouping key. The weekly group key now carries timing_class, so whisper-small (fresh process, whisper-cli) and mlx-whisper (in-process, inference only) land in separate groups and the dashboard draws no ratio between them; same for the ABCBA pair. Test test_rows_of_different_timing_scopes_never_share_a_chart covers both pairs. The README row for mlx-whisper already stated they stay in their own charts; now the code does it too.

@Zbig9000
Zbig9000 requested a review from GustavoA1604 November 6, 2026 11:50
@Zbig9000

Zbig9000 commented Nov 6, 2026

Copy link
Copy Markdown
Author

/review

…ins; pins know sidecar entries

The engine takes the ggml path for any input longer than an EOU or Nemotron
sidecar, so the ABCBA twins export their encoders at the clip's 16060 mel
frames. collect-pins.sh now names prepared and sidecar provision entries
instead of failing jq on them; its test checks the collector stays silent.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@GustavoA1604
GustavoA1604 merged commit 3a1d039 into master Nov 6, 2026
13 checks passed
@GustavoA1604
GustavoA1604 deleted the QVAC-27853/jetson-strix-lanes branch November 6, 2026 13:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants