Skip to content

ci: stop running the eventbus latency SLO bench in CI#192

Merged
unclesp1d3r merged 3 commits into
mainfrom
ci/drop-eventbus-latency-slo
Jun 11, 2026
Merged

ci: stop running the eventbus latency SLO bench in CI#192
unclesp1d3r merged 3 commits into
mainfrom
ci/drop-eventbus-latency-slo

Conversation

@unclesp1d3r

Copy link
Copy Markdown
Member

Summary

Removes the eventbus-latency-slo job from the Benchmarks workflow. Shared GitHub runners are too inconsistent to gate on for latency benchmarking.

The job's measurement always passed (p99 ≈ 20–40µs vs the 1ms threshold), but the ipc_performance bench binary reliably hung to the 15-minute job timeout on the runners — producing a perpetual non-required red check on every PR that touched the eventbus/collector paths.

Changes

  • Delete the eventbus-latency-slo matrix job.
  • Remove the pull_request trigger that existed solely for that job (the other two jobs, benchmarks and load-tests, were already workflow_dispatch-only via per-job if conditions). The Benchmarks workflow is now entirely manual-dispatch.

What is preserved

  • The benchmark code itself stays: daemoneye-eventbus/benches/ipc_performance.rs::latency_p99_slo. It's still runnable locally (cargo bench --package daemoneye-eventbus --bench ipc_performance -- '^latency_p99_slo$') and via workflow_dispatch.
  • benchmarks and load-tests jobs are unchanged (still manual-dispatch).

Notes

AI usage disclosure

Per AI_POLICY.md: change made with Claude Code (Claude Opus 4.8 (1M Context)). Workflow validated with actionlint.

Remove the `eventbus-latency-slo` job (and the now-dead `pull_request` trigger
that existed only for it) from the Benchmarks workflow. Shared GitHub runners
are too inconsistent for latency benchmarking to gate on — the job's measurement
passed (~20-40µs p99 vs the 1ms threshold) but the bench process reliably hung
to the 15-minute job timeout, producing a perpetual non-required red check.

The benchmark itself stays in the codebase
(daemoneye-eventbus/benches/ipc_performance.rs::latency_p99_slo) and is runnable
locally or via `workflow_dispatch`; the other benchmark jobs (benchmarks,
load-tests) were already manual-dispatch only and are unaffected. The Benchmarks
workflow is now entirely manual.

Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copilot AI review requested due to automatic review settings June 11, 2026 20:52
@dosubot dosubot Bot added size:XS This PR changes 0-9 lines, ignoring generated files. ipc Inter-Process Communication labels Jun 11, 2026
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

Summary by CodeRabbit

  • Chores
    • Benchmark workflow is now manual-dispatch only; PR-triggered and automatic CI benchmark runs removed.
    • Per-OS eventbus SLO/IPC benchmark job and its automated executions were removed; manual runs remain possible.
  • Documentation
    • Latency docs updated to note the criterion benchmark is not run automatically in CI and typical manual p99 ≈ 20–40µs.

Walkthrough

The Benchmarks GitHub Actions workflow is switched to manual-dispatch-only and the eventbus-latency-slo job is removed; docs updated to state the IPC latency criterion benchmark exists but is not run in CI and reported p99 is from manual runs.

Changes

Manual-Dispatch Benchmark Configuration

Layer / File(s) Summary
Manual-dispatch workflow trigger, concurrency, and SLO job removal
.github/workflows/benchmarks.yml
Workflow on: adjusted to manual-dispatch-only; added concurrency keyed by workflow+ref with cancel-in-progress: false; removed the eventbus-latency-slo job (OS matrix, SLO benchmark invocation, per-OS artifact upload).
Docs: Local IPC latency wording
docs/src/technical/eventbus-architecture.md
Reworded Local IPC latency validation: references benches/ipc_performance.rs as the criterion benchmark but notes it is not run in CI; p99 ≈ 20–40µs reported from manual runs.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

ci, priority:normal

Poem

Benchmarks paused, no surprise on each PR,
Manual dispatch waits for a guiding star.
SLO job retired, pipeline runs by hand,
Docs log steady p99 from trusted land.
Operators nod — deliberate and planned.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Title follows Conventional Commits format (ci: scope with clear description) and accurately reflects the main change: removing the eventbus latency SLO bench from CI.
Description check ✅ Passed Description comprehensively explains the rationale (GitHub runner inconsistency), changes made, what is preserved, and potential follow-up work. Clearly related to the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch ci/drop-eventbus-latency-slo

Warning

Review ran into problems

🔥 Problems

These MCP integrations need to be re-authenticated in the Integrations settings: Linear, Notion


Comment @coderabbitai help to get the list of available commands and usage tips.

@mergify

mergify Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Merge Protections

Your pull request matches the following merge protections and will not be merged until they are valid.

🟢 Enforce conventional commit

Wonderful, this rule succeeded.

Require conventional commit format per https://www.conventionalcommits.org/en/v1.0.0/. Skipped for dependabot and dosubot.

  • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?!?:

🟢 Full CI must pass

Wonderful, this rule succeeded.

All CI checks must pass. Activates for non-bot authors, or dependabot when files exist outside .github/workflows/.

  • check-success = DCO
  • check-success = coverage
  • check-success = quality
  • check-success = test
  • check-success = test-cross-platform (macos-15, macOS)
  • check-success = test-cross-platform (ubuntu-22.04, Linux)
  • check-success = test-cross-platform (windows-2022, Windows)

🟢 Do not merge outdated PRs

Wonderful, this rule succeeded.

Make sure PRs are within 3 commits of the base branch before merging

  • #commits-behind <= 3

Copilot AI 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.

Pull request overview

Removes an unstable latency-SLO benchmark job from the Benchmarks GitHub Actions workflow so CI is no longer impacted by a runner-specific hang/timeout, while keeping benchmarks available for deliberate, manual execution.

Changes:

  • Removed the eventbus-latency-slo job from the Benchmarks workflow.
  • Removed the pull_request trigger so the workflow is now workflow_dispatch only.
  • Updated the workflow header comment to reflect the manual-only benchmarking policy.

@coderabbitai coderabbitai Bot added testing Related to test development and test infrastructure priority:normal ci and removed ipc Inter-Process Communication labels Jun 11, 2026
@dosubot

dosubot Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

📄 Knowledge review

✏️ Suggested updates

2 page suggestions need review.

Page Library Status
eventbus-architecture /DaemonEye/blob/main/docs/src/technical/eventbus-architecture.md DaemonEye ⬆️ Pushed to this PR
README /DaemonEye/blob/main/daemoneye-eventbus/README.md DaemonEye ⬆️ Pushed to this PR

Leave Feedback Ask Dosu about DaemonEye

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/benchmarks.yml:
- Around line 3-8: Add a workflow-level concurrency stanza to serialize manual
runs: create a concurrency block for this workflow using a unique group key that
includes the ref (e.g., "benchmarks-${{ github.ref }}") and enable
cancel-in-progress as appropriate; place this alongside the existing top-level
"on:" block so manual workflow_dispatch runs for the same branch/resource do not
overlap.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Repository UI (inherited), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5da8517f-f9ae-40e3-b2cb-4bf26d72d43f

📥 Commits

Reviewing files that changed from the base of the PR and between 40e70a6 and e85d7cd.

📒 Files selected for processing (1)
  • .github/workflows/benchmarks.yml

Comment thread .github/workflows/benchmarks.yml
@coderabbitai coderabbitai Bot added documentation Improvements or additions to documentation and removed testing Related to test development and test infrastructure priority:normal ci labels Jun 11, 2026
Serialize manual benchmark dispatches per ref so two concurrent runs don't
contend on the shared criterion baseline cache / artifact state. Uses
cancel-in-progress: false (matching docs.yml) so an in-flight measurement
finishes rather than being killed mid-benchmark. Matches the workflow-level
concurrency convention already used by ci.yml / docs.yml / security.yml.

Addresses CodeRabbit review feedback on #192.

Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copilot AI review requested due to automatic review settings June 11, 2026 21:01
@coderabbitai coderabbitai Bot added priority:normal ci and removed documentation Improvements or additions to documentation labels Jun 11, 2026

Copilot AI 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.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

### Latency

- **Local IPC**: \<1ms p99 for local IPC, validated in CI on Linux and macOS by a dedicated criterion benchmark. Windows and FreeBSD are informational only (not gated in CI).
- **Local IPC**: \<1ms p99 for local IPC. A dedicated criterion benchmark in `benches/ipc_performance.rs` measures latency, but it is not run automatically in CI due to inconsistency on shared GitHub runners. Manual runs on stable hardware typically measure p99 ≈ 20–40µs.
- **Connection Overhead**: Minimal with connection pooling
- **Memory Usage**: Bounded with configurable limits
- **Latency**: \<1ms p99 for local IPC, asserted in CI on Linux and macOS by a dedicated criterion bench in `benches/ipc_performance.rs`. Windows and FreeBSD results are informational only.
- **Latency**: \<1ms p99 for local IPC. A dedicated criterion benchmark in `benches/ipc_performance.rs` measures latency but is not run automatically in CI due to inconsistency on shared GitHub runners. Manual runs on stable hardware typically measure p99 ≈ 20–40µs.
@unclesp1d3r unclesp1d3r self-assigned this Jun 11, 2026
@unclesp1d3r

Copy link
Copy Markdown
Member Author

@Mergifyio queue

@mergify

mergify Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • 🟠 Waiting for queue conditions
  • ⏳ Enter queue
  • ⏳ Run checks
  • ⏳ Merge
Waiting for
  • any of: [📌 queue requirement]
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
  • any of: [🔀 queue conditions]
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
    • all of: [📌 queue conditions of queue rule dependabot-workflows]
      • -files ~= ^(?!\.github/workflows/)
      • any of: [🛡 GitHub repository ruleset rule main]
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections
        • check-success = Mergify Merge Protections
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
All conditions
  • any of [📌 queue requirement]:
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
  • any of [🔀 queue conditions]:
    • all of [📌 queue conditions of queue rule default]:
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections
        • check-success = Mergify Merge Protections
      • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
        • #commits-behind <= 3
      • all of [🛡 Merge Protections rule Enforce conventional commit]:
        • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?!?:
      • all of [🛡 Merge Protections rule Full CI must pass]:
        • check-success = DCO
        • check-success = coverage
        • check-success = quality
        • check-success = test
        • check-success = test-cross-platform (macos-15, macOS)
        • check-success = test-cross-platform (ubuntu-22.04, Linux)
        • check-success = test-cross-platform (windows-2022, Windows)
    • all of [📌 queue conditions of queue rule dependabot-workflows]:
      • -files ~= ^(?!\.github/workflows/)
      • author = dependabot[bot]
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections
        • check-success = Mergify Merge Protections
      • base = main
      • label != do-not-merge
      • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
        • #commits-behind <= 3
      • all of [🛡 Merge Protections rule Enforce conventional commit]:
        • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?!?:
      • all of [🛡 Merge Protections rule Full CI must pass]:
        • check-success = DCO
        • check-success = coverage
        • check-success = quality
        • check-success = test
        • check-success = test-cross-platform (macos-15, macOS)
        • check-success = test-cross-platform (ubuntu-22.04, Linux)
        • check-success = test-cross-platform (windows-2022, Windows)
    • all of [📌 queue conditions of queue rule dependabot]:
      • author = dependabot[bot]
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections
        • check-success = Mergify Merge Protections
      • base = main
      • label != do-not-merge
      • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
        • #commits-behind <= 3
      • all of [🛡 Merge Protections rule Enforce conventional commit]:
        • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?!?:
      • all of [🛡 Merge Protections rule Full CI must pass]:
        • check-success = DCO
        • check-success = coverage
        • check-success = quality
        • check-success = test
        • check-success = test-cross-platform (macos-15, macOS)
        • check-success = test-cross-platform (ubuntu-22.04, Linux)
        • check-success = test-cross-platform (windows-2022, Windows)
    • all of [📌 queue conditions of queue rule dosubot]:
      • author = dosubot[bot]
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections
        • check-success = Mergify Merge Protections
      • base = main
      • label != do-not-merge
      • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
        • #commits-behind <= 3
      • all of [🛡 Merge Protections rule Enforce conventional commit]:
        • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?!?:
      • all of [🛡 Merge Protections rule Full CI must pass]:
        • check-success = DCO
        • check-success = coverage
        • check-success = quality
        • check-success = test
        • check-success = test-cross-platform (macos-15, macOS)
        • check-success = test-cross-platform (ubuntu-22.04, Linux)
        • check-success = test-cross-platform (windows-2022, Windows)
  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of [📌 queue -> configuration change requirements]:
    • -mergify-configuration-changed
    • check-success = Configuration changed

@coderabbitai coderabbitai Bot 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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/benchmarks.yml (1)

130-130: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Inconsistent action version: use upload-artifact v7 throughout.

Line 130 pins upload-artifact@ea165f8d (v4.6.2), but line 103 uses @043fb46d (v7.0.1). Mixing major versions of the same action creates unnecessary drift—v7 is current, so unify on that for both jobs.

🔧 Proposed fix
         - name: Upload load test results
-          uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+          uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
           if: always()
           with:
               name: load-test-results
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/benchmarks.yml at line 130, Replace the pinned
upload-artifact action to use the v7 version consistently: find the occurrence
using "uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02"
and change it to the same v7 pin used elsewhere (e.g. "uses:
actions/upload-artifact@043fb46d" or "uses: actions/upload-artifact@v7") so both
jobs use the same major version.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/benchmarks.yml:
- Line 130: Replace the pinned upload-artifact action to use the v7 version
consistently: find the occurrence using "uses:
actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02" and change it
to the same v7 pin used elsewhere (e.g. "uses: actions/upload-artifact@043fb46d"
or "uses: actions/upload-artifact@v7") so both jobs use the same major version.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Repository UI (inherited), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5ba67816-bfb7-4166-98fc-17dab337052e

📥 Commits

Reviewing files that changed from the base of the PR and between 1388565 and 77f4f2a.

📒 Files selected for processing (1)
  • .github/workflows/benchmarks.yml

@codecov

codecov Bot commented Jun 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@mergify

mergify Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

queue

⚠️ Configuration not compatible with required_status_checks ruleset rule

Details

The ruleset rule parameter required_status_checks.strict_required_status_checks_policy is not compatible with draft PR checks. To keep this ruleset enabled, update your Mergify configuration to enable in-place checks: set merge_queue.max_parallel_checks: 1, set every queue rule batch_size: 1, and avoid two-step CI (make merge_conditions identical to queue_conditions). Otherwise, you can disable the Require branches to be up to date before merging option, or allow Mergify to bypass the ruleset or disable the entire ruleset.

@unclesp1d3r unclesp1d3r merged commit cb05cc2 into main Jun 11, 2026
18 checks passed
@unclesp1d3r unclesp1d3r deleted the ci/drop-eventbus-latency-slo branch June 11, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci priority:normal size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants