Skip to content

ci: run buzz-workflow and buzz-acp lib tests in the unit gate - #4590

Open
mfanafuthimhlanga wants to merge 1 commit into
block:mainfrom
mfanafuthimhlanga:ci/unit-gate-workflow-acp
Open

ci: run buzz-workflow and buzz-acp lib tests in the unit gate#4590
mfanafuthimhlanga wants to merge 1 commit into
block:mainfrom
mfanafuthimhlanga:ci/unit-gate-workflow-acp

Conversation

@mfanafuthimhlanga

@mfanafuthimhlanga mfanafuthimhlanga commented Aug 3, 2026

Copy link
Copy Markdown

Summary

just test-unit covers buzz-core, buzz-auth, buzz-voice, buzz-cli, buzz-db --lib, buzz-conformance, buzz-push-gateway, and buzz-backend-kubernetes. buzz-workflow and buzz-acp are referenced by no cargo test or nextest invocation anywhere in .github/workflows/ or scripts/run-tests.sh. buzz-acp appears only in build and release contexts — the Justfile binary loops and sprig.yml.

This is exactly the condition the buzz-backend-kubernetes block immediately above already names:

Enumerated explicitly because nothing in CI runs cargo test --workspace — workspace membership alone buys clippy/check, not a single executed test.

Both crates were enumerated nowhere, so cargo clippy --workspace --all-targets compiled their test targets while nothing executed them.

Crate Lib tests Ran in CI before this PR
buzz-workflow 154 no
buzz-acp 661 no

This is the same class of gap as #3461 (buzz-relay: 771 of 804 never execute). This PR does not address buzz-relay — see below.

Why it matters

buzz-acp owns the agent concurrency model: per-channel queues with per-channel in-flight tracking (queue.rs), the fungible worker pool (pool.rs), and mention-filtered per-agent subscriptions (relay.rs). buzz-workflow owns the workflow schema and executor, including the request_approval definition-time validation that WF-08 work (#2377, #3327) touches.

Both are areas with active open bugs, which is consistent with neither having had a test gate.

Verification

Both suites are infra-free and pass clean. Run on a fork, since fork PRs need maintainer approval before workflows execute:

Starting 154 tests across 1 binary (2 tests skipped)
Summary [0.306s] 154 tests run: 154 passed, 2 skipped

Starting 661 tests across 1 binary
Summary [13.080s] 661 tests run: 661 passed, 0 skipped

buzz-acp runs with 0 skipped — no #[ignore]d subset, no infra-gated early returns.

I could not run just ci locally (no working Rust toolchain on this machine), so local fmt/clippy were not run. The change is seven lines of Justfile and CI's own Rust Lint job covers it.

Why buzz-relay is excluded

Deliberately out of scope, and it is why #3461 is not trivially fixable. -p buzz-relay --lib surfaces four tests that need Postgres but are not #[ignore]d:

api::admin::tests::feedback_attachment_rejects_unknown_feedback
api::admin::tests::report_detail_rejects_unknown_report
api::media::tests::media_get_auth_flag_off_allows_unauthenticated_read_until_sidecar_gate
api::media::tests::media_get_auth_flag_on_accepts_range_header_only_after_auth

Each hangs ~30s on a DB connection and then fails, and nextest's fail-fast then cancelled 628 of 840 remaining tests. Marking those four #[ignore] looks like the right first step for #3461, but it is a separate change against a different crate and I did not want to bundle it here.

Note on method

I confirmed these tests were not merely passing-by-default before trusting the result: I added a test, watched CI go green, then inverted the assertion so it had to fail — CI stayed green, which is what surfaced the gap. Under nextest's default profile a test that never runs is indistinguishable from one that passes, so the green run alone proved nothing.

Context: I found this while evaluating the workflow and approval-gate layer, which is where my interest in the codebase is.

`just test-unit` covers buzz-core, buzz-auth, buzz-voice, buzz-cli,
buzz-db --lib, buzz-conformance, buzz-push-gateway, and buzz-backend-kubernetes.
buzz-workflow and buzz-acp are referenced by no `cargo test` or `nextest`
invocation anywhere in .github/workflows/ or scripts/run-tests.sh — buzz-acp
appears only in build and release contexts (Justfile binary loops, sprig.yml).

This is the condition the buzz-backend-kubernetes block immediately above
already names: "nothing in CI runs `cargo test --workspace` — workspace
membership alone buys clippy/check, not a single executed test." Both crates
were enumerated nowhere, so `cargo clippy --workspace --all-targets` compiled
their tests while nothing executed them:

  buzz-workflow --lib    154 tests
  buzz-acp --lib         661 tests

Both are infra-free and pass clean:

  Summary [0.306s] 154 tests run: 154 passed, 2 skipped
  Summary [13.080s] 661 tests run: 661 passed, 0 skipped

buzz-relay is deliberately not addressed here — it needs Postgres, and
api::admin and api::media carry four infra-dependent tests that are not
#[ignore]d, so `-p buzz-relay --lib` hangs ~30s per test and then fails. That
belongs with block#3461.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Mfanafuthi Mhlanga <309677444+mfanafuthimhlanga@users.noreply.github.com>
@mfanafuthimhlanga
mfanafuthimhlanga force-pushed the ci/unit-gate-workflow-acp branch from 09ebfd2 to 9704552 Compare August 3, 2026 19:39
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.

1 participant