Skip to content

Completed ubuntu CICD pipeline#455

Merged
HenryNdubuaku merged 13 commits intomainfrom
ubuntu-cicd
Feb 26, 2026
Merged

Completed ubuntu CICD pipeline#455
HenryNdubuaku merged 13 commits intomainfrom
ubuntu-cicd

Conversation

@ncylich
Copy link
Copy Markdown
Collaborator

@ncylich ncylich commented Feb 25, 2026

Summary

Sets up CI/CD infrastructure for automated PR verification on a self-hosted ARM64 Linux runner.

Workflow (.github/workflows/verify-pr.yml):

  • Triggers on PR approval or manual dispatch
  • Single build job followed by parallel test jobs (unit, loading, model ground truth)
  • Auto-converts models from HuggingFace on first run, caches weights across runs
  • Tests 10 model configurations: 5 LLMs (qwen, lfm2, lfm2moe, gemma, nomic), 2 STT (whisper, moonshine), 3 VLM precisions (lfm2vl
    INT8/INT4/FP16)

Test plan

  • All 10 model tests pass on self-hosted ARM64 Linux runner
  • Unit tests (graph, kernel, kv_cache, index) pass
  • Model loading failure tests (5/5) pass
  • Workflow tested end-to-end via workflow_dispatch on fork

Test infrastructure:

  • test_groundtruth.cpp — ground truth tests using golden reference files for LLM (substring match), STT (WER threshold), embedding (dimension
    check), and VLM
  • test_model_loading.cpp — 5 failure-mode tests (missing dir, missing config, corrupt weights, empty weights, missing vocab)
  • Golden files in tests/golden//.json with expected outputs generated on the CI runner

Bug fixes:

  • test_utils.cpp: Fixed json_string() to handle escaped quotes in JSON values
  • model_silero_vad.cpp: Added missing #include that broke Linux GCC builds

Copilot AI review requested due to automatic review settings February 25, 2026 23:17
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds an ARM64 self-hosted CI verification workflow plus supporting “golden/exhaustive” and failure-mode tests to validate model loading and runtime behavior during PR verification.

Changes:

  • Introduces a new GitHub Actions workflow to build on a self-hosted ARM64 runner and run unit + exhaustive model checks.
  • Adds new C++ test executables for exhaustive “golden” verification and model-loading failure modes, plus scripts/data to drive golden runs.
  • Extends the CLI/test runner plumbing to support an --exhaustive mode and adjusts test build/link behavior.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
.github/workflows/verify-pr.yml New PR verification workflow for self-hosted ARM64, building + running unit and exhaustive tests.
tests/test_exhaustive.cpp New executable to run one golden test case selected by env vars (LLM/VLM/embedding/STT).
tests/test_model_loading.cpp New negative tests for common model-loading failure modes.
tests/run.sh Adds --exhaustive flag and excludes test_exhaustive from the default test discovery.
tests/golden/golden.json Adds a single JSON file containing golden test vectors/expectations.
tests/golden/generate_golden.sh Script to download models and run test_exhaustive in generation mode to aid golden updates.
tests/CMakeLists.txt Refines curl linking logic (APPLE vs system curl) and minor formatting.
python/src/cli.py Wires --exhaustive through cactus test into tests/run.sh.
cactus/models/model_silero_vad.cpp Adds a missing include for Linux builds (but introduces a duplicate).
.gitignore Ignores third_party/.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>
…d_token_id)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>
Signed-off-by: Noah Cylich <[email protected]>
…e, golden tests

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>
ncylich and others added 5 commits February 25, 2026 18:23
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>
GCC requires designated initializers to match struct declaration order.
Reorder .epsilon/.axis and .output_precision/.stride in OpParams
initializations to match the field order in OpParams struct.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>
Signed-off-by: Noah Cylich <[email protected]>
@HenryNdubuaku HenryNdubuaku merged commit 0d20757 into main Feb 26, 2026
5 of 6 checks passed
cattermelon1234 pushed a commit to cattermelon1234/cactus that referenced this pull request Feb 28, 2026
* condensed and completed CICD pipeline

Signed-off-by: Noah Cylich <[email protected]>

* fixing wrong initializer for conv kernels

Signed-off-by: Noah Cylich <[email protected]>

* fix GCC build errors: designator order and missing Parakeet types

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>

* add missing Config members for Parakeet model (encoder_hidden_act, pad_token_id)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>

* improving naming convention

Signed-off-by: Noah Cylich <[email protected]>

* add Parakeet model support: config parsing, factory, constant pad_mode, golden tests

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>

* cleaned small edge-cases/improved logs

Signed-off-by: Noah Cylich <[email protected]>

* Merge branch 'main' into ubuntu-cicd

Signed-off-by: Noah Cylich <[email protected]>

* Revert artifact changes in cactus/ to match main

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>

* Fix designated initializer ordering for GCC compliance

GCC requires designated initializers to match struct declaration order.
Reorder .epsilon/.axis and .output_precision/.stride in OpParams
initializations to match the field order in OpParams struct.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

Signed-off-by: Noah Cylich <[email protected]>

* removing .gitignore changes

Signed-off-by: Noah Cylich <[email protected]>

* Remove unused transcription tests from test_stt.cpp

Signed-off-by: HenryNdubuaku <[email protected]>

---------

Signed-off-by: Noah Cylich <[email protected]>
Signed-off-by: HenryNdubuaku <[email protected]>
Co-authored-by: HenryNdubuaku <[email protected]>
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.

3 participants