Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
119e913
feat(eventbus): close END-297 — finalize message broker closure pass
unclesp1d3r Apr 18, 2026
9821dc0
docs: Dosu updates for PR #178
dosubot[bot] Apr 18, 2026
7098795
chore(.gitignore): update context directory exclusion pattern
unclesp1d3r Apr 18, 2026
dbd774e
docs(agents): update AI assistant behavior guidelines for merging pro…
unclesp1d3r Apr 18, 2026
4f27920
fix(eventbus,procmond): address END-297 code review findings (A-F)
unclesp1d3r Apr 18, 2026
34511bb
fix: address PR #178 review feedback
unclesp1d3r Apr 19, 2026
2eb4ba4
fix(procmond): release event_bus lock before async subscribe + single…
unclesp1d3r Apr 19, 2026
24c7360
fix: address round-2 PR #178 review feedback
unclesp1d3r Apr 19, 2026
0d4d57e
chore(deps): update dependencies in Cargo.lock for various packages
unclesp1d3r Apr 19, 2026
3f02a96
chore(config): update tool versions in mise.toml for compatibility
unclesp1d3r Apr 19, 2026
18bf641
docs(best-practices): add guidance on wrapping RwLock-held resources …
unclesp1d3r Apr 19, 2026
6a09779
fix: address round-3 PR #178 review feedback
unclesp1d3r Apr 19, 2026
31306eb
chore(deps): update dependencies for libc, tokio, and assert_cmd vers…
unclesp1d3r Apr 19, 2026
fb9ab6c
chore(config): update cargo-binstall to latest and goreleaser to 2.15.3
unclesp1d3r Apr 19, 2026
22a9b04
chore(config): update Python version to 3.14.4
unclesp1d3r Apr 19, 2026
79c9773
chore(clippy): fix duration_suboptimal_units + map_unwrap_or + manual…
unclesp1d3r Apr 19, 2026
f25beb1
fix: address PR #178 comprehensive-review blocking findings
unclesp1d3r Apr 19, 2026
38dd28e
fix: address re-review findings on begin_monitoring_or_exit helper
unclesp1d3r Apr 19, 2026
48ad2f2
chore(config): update Rust version to stable for consistency
unclesp1d3r Apr 19, 2026
83e05b2
chore(ci): update actions/checkout and actions-rust-lang/audit versions
unclesp1d3r Apr 19, 2026
fbc8083
chore(security): update workflow syntax and improve command execution
unclesp1d3r Apr 19, 2026
1c44a8c
chore(ci): update workflow syntax and action versions for consistency
unclesp1d3r Apr 19, 2026
b99bb48
chore(just): adopt libmagic-rs justfile improvements
unclesp1d3r Apr 19, 2026
daca473
chore(just): defer lint-md from default lint chain
unclesp1d3r Apr 19, 2026
0a2a66f
chore(ci): remove Qlty coverage upload step from CI workflow
unclesp1d3r Apr 19, 2026
004e5df
fix: address round-7 PR feedback, retire acceptance-evidence doc
unclesp1d3r Apr 19, 2026
69378cd
chore(config): update Rust version to 1.95.0 in mise.toml and mise.lock
unclesp1d3r Apr 19, 2026
27c070c
ci(benchmarks): cache target/ for eventbus-latency-slo job
unclesp1d3r Apr 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ jobs:
contents: read
issues: write
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/audit@v1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/audit@72c09e02f132669d52284a3323acdb503cfc1a24 # v1.2.7
name: Audit Rust Dependencies
81 changes: 76 additions & 5 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
name: Benchmarks

on:
# The eventbus-latency-slo job gates PRs on the END-297 local-IPC round-trip
# p99 latency SLO (<1ms). Scoped to paths that can plausibly affect IPC
# latency so we don't run a bench on every PR. Other jobs in this workflow
# (benchmarks, load-tests) remain workflow_dispatch-only and are gated by
# per-job `if` conditions below; they are informational and expensive to
# run on every PR.
pull_request:
branches: [ main ]
paths:
- "daemoneye-eventbus/**"
- "collector-core/**"
- ".github/workflows/benchmarks.yml"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
# Toolchain or workspace-level dep changes can shift Tokio/compiler
# behavior and move p99 without touching the eventbus crate itself.
- "Cargo.toml"
- "Cargo.lock"
- "rust-toolchain.toml"
workflow_dispatch:
inputs:
suite:
Expand Down Expand Up @@ -30,12 +47,15 @@ env:

jobs:
benchmarks:
# Informational benchmark suite; runs only on manual dispatch to avoid
# spending PR CI time on non-gating criterion runs.
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
Expand All @@ -45,7 +65,8 @@ jobs:
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: target/criterion
key: criterion-baseline-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'Cargo.lock') }}
key: criterion-baseline-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml',
'Cargo.lock') }}

- name: Run benchmarks
env:
Expand Down Expand Up @@ -80,23 +101,26 @@ jobs:
if: github.ref == 'refs/heads/main'
with:
path: target/criterion
key: criterion-baseline-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml', 'Cargo.lock') }}
key: criterion-baseline-${{ runner.os }}-${{ hashFiles('rust-toolchain.toml',
'Cargo.lock') }}

- name: Upload benchmark results
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: benchmark-results
path: bench-output.txt
retention-days: 30

load-tests:
# Informational load tests; runs only on manual dispatch.
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
Expand All @@ -114,3 +138,50 @@ jobs:
name: load-test-results
path: load-test-output.txt
retention-days: 30

# END-297 acceptance-criterion gate: local-IPC round-trip p99 latency < 1ms.
# See daemoneye-eventbus/benches/ipc_performance.rs::latency_p99_slo.
# Gated on Linux and macOS only; Windows and FreeBSD are informational per
# the END-297 plan (Key Technical Decisions) and the AGENTS.md OS support
# matrix.
eventbus-latency-slo:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
runs-on: ${{ matrix.os }}
timeout-minutes: 15
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
github_token: ${{ secrets.GITHUB_TOKEN }}

# Cache `target/` across runs so the cold-build time doesn't eat the
# 15-minute job timeout. Key includes the OS and Cargo.lock so the
# cache invalidates on toolchain/dep changes.
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
with:
shared-key: eventbus-latency-slo-${{ matrix.os }}
cache-targets: "true"
cache-all-crates: "true"

- name: Run END-297 latency p99 SLO bench (<1ms)
# Filter anchored with ^...$ so it matches only the SLO bench ID
# and not the pre-existing `latency/*` bench IDs in the same file.
run: |
set -o pipefail
mise x -- cargo bench --package daemoneye-eventbus --bench ipc_performance -- '^latency_p99_slo$' 2>&1 | tee eventbus-latency-slo.txt
Comment thread
coderabbitai[bot] marked this conversation as resolved.

- name: Upload latency SLO results
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: always()
with:
name: eventbus-latency-slo-${{ matrix.os }}
path: eventbus-latency-slo.txt
retention-days: 30
15 changes: 5 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ name: CI

on:
push:
branches: [main]
branches: [ main ]
pull_request:
branches: [main]
branches: [ main ]
workflow_dispatch:

# Restrict permissions to minimum required (principle of least privilege)
# Restrict permissions to minimum required (principle of least privilege)
permissions:
contents: read

Expand Down Expand Up @@ -38,7 +38,7 @@ jobs:
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Ensure rustfmt and clippy are installed
run: rustup component add rustfmt clippy
run: mise x -- rustup component add rustfmt clippy

- name: Check formatting
run: just lint-rust
Expand Down Expand Up @@ -114,7 +114,7 @@ jobs:
coverage:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: [test, test-cross-platform, quality]
needs: [ test, test-cross-platform, quality ]
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
Expand All @@ -138,8 +138,3 @@ jobs:
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
slug: EvilBit-Labs/daemoneye
- name: Upload to Qlty
uses: qltysh/qlty-action/coverage@a19242102d17e497f437d7466aa01b528537e899 # v2.2.0
with:
token: ${{ secrets.QLTY_COVERAGE_TOKEN }}
files: target/lcov.info
8 changes: 4 additions & 4 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CodeQL

on:
push:
branches: [main]
branches: [ main ]
pull_request:
branches: [main]
branches: [ main ]
schedule:
- cron: "43 22 * * 1"
workflow_dispatch:
Expand All @@ -19,8 +19,8 @@ jobs:
name: CodeQL Analyze
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/copilot-setup-steps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ jobs:
# You can define any steps you want, and they will run before the agent starts.
# If you do not check out your code, Copilot will do this for you.
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
Expand Down
25 changes: 13 additions & 12 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Deploy Documentation

on:
push:
branches: [main]
branches: [ main ]
pull_request:
branches: [main]
branches: [ main ]
workflow_dispatch:

permissions:
Expand All @@ -24,15 +24,15 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v3
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup mdBook
uses: jontze/action-mdbook@v4
uses: jontze/action-mdbook@6c0be56d14c4bf16861b00af61f50ff7400ce502 # v4.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
mdbook-version: latest
Expand All @@ -41,29 +41,30 @@ jobs:
use-admonish: true

- name: Install cargo-binstall
uses: cargo-bins/cargo-binstall@main
uses: cargo-bins/cargo-binstall@dc19f1e48450eefe5a29b8da6c6b00a87d730b37 # v1.18.1

- name: Install mdbook plugins
run: cargo binstall mdbook-tabs mdbook-i18n-helpers mdbook-yml-header mdbook-image-size --no-confirm
run: cargo binstall mdbook-tabs mdbook-i18n-helpers mdbook-yml-header
mdbook-image-size --no-confirm

- name: Build rustdoc
run: |
cargo doc --no-deps --document-private-items --target-dir target
mise x -- cargo doc --no-deps --document-private-items --target-dir target
mkdir -p docs/book/api
cp -r target/doc/* docs/book/api/

- name: Build mdBook
run: |
cd docs
mdbook build
mise x -- mdbook build

- name: Setup Pages
if: github.ref == 'refs/heads/main'
uses: actions/configure-pages@v5
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0

- name: Upload artifact
if: github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@v4
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: docs/book

Expand All @@ -77,4 +78,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
30 changes: 15 additions & 15 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,26 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.91.0
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
with:
toolchain: stable
targets: >-
x86_64-unknown-linux-gnu,
aarch64-unknown-linux-gnu
x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu

- name: Install cross-compilation dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29 # v7.0.0
uses: goreleaser/goreleaser-action@e24998b8b67b290c2fa8b7c14fcfa7de2c5c9b8c # v7.1.0
with:
distribution: goreleaser
version: "~> v2"
Expand All @@ -61,21 +61,21 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.91.0
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
with:
toolchain: stable
targets: >-
x86_64-apple-darwin,
aarch64-apple-darwin
x86_64-apple-darwin, aarch64-apple-darwin

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29 # v7.0.0
uses: goreleaser/goreleaser-action@e24998b8b67b290c2fa8b7c14fcfa7de2c5c9b8c # v7.1.0
with:
distribution: goreleaser
version: "~> v2"
Expand All @@ -91,21 +91,21 @@ jobs:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: jdx/mise-action@5228313ee0372e111a38da051671ca30fc5a96db # v3.6.3
- uses: jdx/mise-action@1648a7812b9aeae629881980618f079932869151 # v4.0.1
with:
install: true
cache: true
github_token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@1.91.0
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
with:
toolchain: stable
targets: >-
x86_64-pc-windows-msvc,
aarch64-pc-windows-msvc
x86_64-pc-windows-msvc, aarch64-pc-windows-msvc

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@ec59f474b9834571250b370d4735c50f8e2d1e29 # v7.0.0
uses: goreleaser/goreleaser-action@e24998b8b67b290c2fa8b7c14fcfa7de2c5c9b8c # v7.1.0
with:
distribution: goreleaser
version: "~> v2"
Expand Down
Loading
Loading