Skip to content

fix: resolve RUSTSEC-2023-0089 and RUSTSEC-2025-0141 advisories#161

Merged
unclesp1d3r merged 14 commits intomainfrom
131-rustsec-2023-0089-atomic-polyfill-is-unmaintained
Mar 17, 2026
Merged

fix: resolve RUSTSEC-2023-0089 and RUSTSEC-2025-0141 advisories#161
unclesp1d3r merged 14 commits intomainfrom
131-rustsec-2023-0089-atomic-polyfill-is-unmaintained

Conversation

@unclesp1d3r
Copy link
Member

@unclesp1d3r unclesp1d3r commented Mar 17, 2026

Summary

Resolves all outstanding RUSTSEC advisories to achieve a clean cargo deny check advisories and cargo audit — zero ignored advisories remaining.

Impact: 27 files changed (+415, -230) | Risk Level: Low | Review Focus: Cargo.toml, deny.toml, 2 source files

What Changed

Security Fixes (Primary Goal)

Advisory Crate Resolution
RUSTSEC-2023-0089 atomic-polyfill Eliminated by disabling postcard default features — heapless (which pulled in atomic-polyfill) was never used
RUSTSEC-2025-0141 bincode Removed stale ignore entry — bincode was never in the dependency tree

Key change in Cargo.toml:

# Before
postcard = { version = "1.1.3", features = ["alloc"] }

# After — drops heapless → atomic-polyfill entirely
postcard = { version = "1.1.3", default-features = false, features = ["alloc"] }

Dependency tree result:

  • atomic-polyfill — eliminated
  • heapless — eliminated
  • hash32 — eliminated
  • stable_deref_trait — eliminated
  • Net reduction in transitive dependencies

Source Code Fixes

File Change Reason
collector-core/src/load_balancer.rs rand::Rngrand::RngExt rand 0.9→0.10 moved random_range to RngExt trait
daemoneye-eventbus/src/task_distribution.rs rand::Rngrand::RngExt Same API migration
procmond/tests/property_based_process_tests.rs Arg length limit 8KB → 128KB Flaky test: real processes (AI tools, Java, language servers) exceed 8KB args

Dependency Updates

26 crate version bumps (click to expand)
Crate Before After
anyhow 1.0.100 1.0.102
assert_cmd 2.1.2 2.2.0
bitflags 2.10.0 2.11.0
bytes 1.11.0 1.11.1
chrono 0.4.43 0.4.44
clap 4.5.56 4.6.0
criterion 0.8.1 0.8.2
futures 0.3.31 0.3.32
futures-util 0.3.31 0.3.32
insta 1.46.2 1.46.3
interprocess 2.2.3 2.4.0
predicates 3.1.3 3.1.4
proptest 1.9.0 1.10.0
rand 0.9.2 0.10.0
regex 1.12.2 1.12.3
security-framework 3.5.1 3.7.0
sysinfo 0.38.0 0.38.4
tempfile 3.24.0 3.27.0
tokio 1.49.0 1.50.0
toml 1.0.6 0.9.8
tracing-subscriber 0.3.22 0.3.23
tracing-test 0.2.5 0.2.6
uuid 1.20.0 1.22.0
whoami 2.1.0 2.1.1
winreg 0.55.0 0.56.0

Config & Tooling (non-functional)

  • AI assistant .gitignore files for tessl-managed skill directories
  • Coderabbit, Mergify, MCP server configuration
  • mdformat auto-fix in docs/src/testing.md

Risk Assessment

Overall: Low

Factor Risk Rationale
Functionality Minimal No heapless types were used in code — grep -rn heapless --include="*.rs" returns nothing
Serialization None postcard alloc feature is the only one used; heapless-cas was dead weight
API compat Low Only rand::Rngrand::RngExt — 2 call sites, same behavior
Test flakiness Improved 128KB limit accommodates real-world processes without losing meaningful bounds

Rollback: Revert default-features = false on postcard and restore deny.toml ignore entries.

Test Plan

  • cargo tree -i atomic-polyfill --target all — package not found (eliminated)
  • cargo tree -i heapless --target all — package not found (eliminated)
  • cargo deny check advisoriesadvisories ok
  • cargo audit — 0 vulnerabilities across 312 crates
  • cargo clippy --workspace -- -D warnings — zero warnings
  • cargo test --workspace — 1423 tests pass
  • cargo bench --no-run — all 5 benchmark suites compile
  • just ci-check — full local CI parity check passes
  • Previously flaky test_process_data_validity_properties now passes reliably

Review Checklist

  • No new unsafe code
  • cargo clippy -- -D warnings clean
  • cargo fmt --all --check clean
  • All RUSTSEC advisories resolved (zero ignores)
  • No hardcoded secrets or credentials
  • Dependency versions pinned appropriately
  • Cargo.lock committed and consistent

🤖 Generated with Claude Code

unclesp1d3r and others added 10 commits March 17, 2026 00:30
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
… tests

Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Raise the max command line argument length assertion from 8KB to 128KB
in the property-based process tests. Real-world processes (language
servers, AI tools, Java apps) regularly exceed the previous limit,
causing false test failures on developer machines.

Also apply mdformat auto-fix to docs/src/testing.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
@unclesp1d3r unclesp1d3r linked an issue Mar 17, 2026 that may be closed by this pull request
Copilot AI review requested due to automatic review settings March 17, 2026 06:13
@dosubot dosubot bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 17, 2026
@coderabbitai
Copy link

coderabbitai bot commented Mar 17, 2026

Summary by CodeRabbit

  • New Features

    • Added local vendored dependency manifest and a new local service configuration.
    • Added project-level ignore patterns for generated artifacts.
  • Bug Fixes

    • Resolved outstanding security advisories and updated advisory handling.
  • Chores

    • Refined pull-request automation and merge protection rules.
    • Bumped multiple dependencies for compatibility and maintenance.
  • Tests

    • Improved property-based tests, added regression seeds, and increased allowed argument length in validations.
  • Documentation

    • Added agent rules section and updated security advisory history and review dates.

Walkthrough

Adds an MCP stdio server config, restructures Mergify into multi-queue rules, removes specific RUSTSEC ignores, bumps many Rust workspace dependencies, introduces Tessl-managed agent rules and tessl.json vendored manifest, and increases procmond test argument-size bounds with new regression seeds.

Changes

Cohort / File(s) Summary
MCP & vendoring
/.mcp.json, tessl.json, .github/skills/.gitignore
Adds an MCP server entry (tessl, type stdio), introduces a vendored tessl.json manifest listing skill deps, and adds Tessl-managed ignore patterns to skills .gitignore.
Agent docs
AGENTS.md
Appends a Tessl-managed agent rules directive referencing .tessl/RULES.md.
Merge automation
.mergify.yml
Replaces single-rule config with multi-queue queue_rules (dosubot, dependabot-workflows, dependabot, default), moves merge protections to multiple rules enforcing conventional commits, CI/lint requirements, and up-to-date PR constraints.
Dependency updates
Cargo.toml
Bumps 20+ workspace crate versions and adjusts features (tokio, rand, uuid, postcard, interprocess, etc.).
Security policy & advisory config
deny.toml, SECURITY.md
Removes previously-ignored RUSTSEC advisories (ignored list cleared) and records advisory resolution history plus updated review dates.
Core change (small)
collector-core/src/load_balancer.rs
Swapped rand trait import from rand::Rng to rand::RngExt; selection logic unchanged.
Testing & regressions
procmond/tests/property_based_process_tests.rs, procmond/tests/property_based_process_tests.proptest-regressions, docs/src/testing.md
Increased CLI-arg length bound from 8,192 to 131,072, added three proptest failure seeds, and a minor workflow YAML formatting tweak.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

serialization, testing, dependencies

Poem

Tessl hums a queue and updates land,
Cargo bumps march forward, tidy and planned.
Tests stretch their bounds, seeds filed away,
Advisories noted, cleared for the day —
Secure, fast, and watched: the system stands. 🛡️

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed Title follows Conventional Commits spec with type 'fix' and clearly describes the main objective: resolving two specific RUSTSEC advisories.
Description check ✅ Passed Description is comprehensive and directly related to the changeset, detailing security fixes, dependency updates, source code changes, risk assessment, and verification steps.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 131-rustsec-2023-0089-atomic-polyfill-is-unmaintained
📝 Coding Plan
  • Generate coding plan for human review comments

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

@mergify
Copy link
Contributor

mergify bot commented Mar 17, 2026

Merge Protections

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

🟠 CI must pass

Waiting checks: coverage.

All CI checks must pass. Release-plz PRs are exempt because they only bump versions and changelogs (code was already tested on main), and GITHUB_TOKEN-triggered force-pushes suppress CI.

  • 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)

🟢 📃 Configuration Change Requirements

Wonderful, this rule succeeded.

Mergify configuration change

  • check-success = Configuration changed

🟢 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

@dosubot dosubot bot added dependencies Pull requests that update a dependency file security Security-related issues and vulnerabilities testing Related to test development and test infrastructure labels Mar 17, 2026
@unclesp1d3r unclesp1d3r self-assigned this Mar 17, 2026
@dosubot
Copy link
Contributor

dosubot bot commented Mar 17, 2026

Related Documentation

4 document(s) may need updating based on files changed in this PR:

DaemonEye

SECURITY /DaemonEye/blob/main/SECURITY.md
View Suggested Changes
@@ -128,7 +128,13 @@
 
 ## Accepted Risks (Dependencies)
 
-As of 2025-10-11 we have **no** outstanding accepted risks. The previous RUSTSEC exemptions for `instant` (RUSTSEC-2024-0384) and `paste` (RUSTSEC-2024-0436) were tied to the third-party `busrt` broker. With the introduction of our in-house `daemoneye-eventbus` crate that dependency has been removed from the workspace, eliminating both advisories.
+We have **no** outstanding accepted risks.
+
+### Advisory Resolution History
+
+**March 2026** — Resolved RUSTSEC-2023-0089 (atomic-polyfill unmaintained) and RUSTSEC-2025-0141 (bincode unmaintained) by disabling default features on the `postcard` dependency (`default-features = false`) and explicitly enabling only the required `alloc` feature. This removed `heapless` and `atomic-polyfill` from the dependency tree entirely. Both advisory ignore entries were removed from deny.toml.
+
+**January 2025** — Resolved RUSTSEC-2024-0384 (`instant`) and RUSTSEC-2024-0436 (`paste`) by removing the third-party `busrt` broker dependency. With the introduction of the in-house `daemoneye-eventbus` crate, both advisories were eliminated from the workspace.
 
 ### Operational Controls
 
@@ -146,4 +152,4 @@
 
 ---
 
-**Last Updated**: September 2025 **Next Review**: September 2026
+**Last Updated**: March 2026 **Next Review**: March 2027

✅ Accepted

Security Implementation Patterns
View Suggested Changes
@@ -238,10 +238,10 @@
 
 ### Entropy and Random Number Generation
 
-[The codebase uses the rand crate v0.9.2](https://github.com/EvilBit-Labs/DaemonEye/blob/0accb1ce956374dfc211a78d73043f52d6c64070/Cargo.toml#L98) which uses getrandom for entropy:
-
-```rust
-use rand::Rng;
+[The codebase uses the rand crate v0.10.0](https://github.com/EvilBit-Labs/DaemonEye/blob/0accb1ce956374dfc211a78d73043f52d6c64070/Cargo.toml#L98) which uses getrandom for entropy:
+
+```rust
+use rand::RngExt;
 let mut rng = rand::rng();
 let index = rng.random_range(0..collectors.len());
 ```
@@ -551,11 +551,12 @@
 ```toml
 yanked = "deny"
 unmaintained = "workspace"
-```
-
-Two advisories are explicitly ignored with documented justifications:
-- `RUSTSEC-2025-0141` (bincode unmaintained, not a security issue)
-- `RUSTSEC-2023-0089` (atomic-polyfill unmaintained, tracking upstream fix)
+
+# No ignored advisories — all RUSTSEC issues resolved.
+ignore = []
+```
+
+All RUSTSEC advisories have been resolved. The `atomic-polyfill` and `heapless` dependencies were eliminated from the dependency tree by disabling default features on the `postcard` crate (`default-features = false`) while keeping the `alloc` feature. This configuration removes the problematic transitive dependencies without impacting functionality.
 
 **Source control:**
 ```toml

✅ Accepted

Technical Deep-Dive: Architecture, Internals & Roadmap
View Suggested Changes
@@ -71,7 +71,7 @@
 | --- | --- | --- |
 | Language | Rust 2024 Edition | MSRV 1.91+ |
 | Async Runtime | Tokio | 1.49.0 |
-| Serialization | Serde, Postcard, Prost (protobuf) | 1.0.228 / 1.1.3 / 0.14.3 |
+| Serialization | Serde, Postcard, Prost (protobuf) | 1.0.228 / 1.1.3 (no-default-features) / 0.14.3 |
 | Database | redb (pure Rust embedded) | 3.1.0 |
 | CLI | clap (derive) | 4.6.0 |
 | Process Enumeration | sysinfo | 0.38.4 |
@@ -231,7 +231,7 @@
 The WAL (`wal.rs`) provides crash recovery for event publishing:
 
 - <!-- §nt:2db3ed34-14d1-4c7d-bde0-d421fb710f85 --> **Entry format**: Sequence number (u64, monotonic) + ProcessEvent + CRC32 checksum + event type tag
-- <!-- §nt:248df975-8a10-4396-91ee-ad3482e6c8d2 --> **Serialization**: Length-delimited postcard with CRC32 integrity validation
+- <!-- §nt:248df975-8a10-4396-91ee-ad3482e6c8d2 --> **Serialization**: Length-delimited postcard (no-default-features, `alloc`-only) with CRC32 integrity validation
 - <!-- §nt:24a41c2d-71cb-4764-a4b0-91ab46359f63 --> **File rotation**: At 80MB threshold, files named `procmond-{sequence:05}.wal`
 - <!-- §nt:b5f40345-abee-4140-b09a-6d4f1bf6266e --> **Recovery**: On startup, replays all WAL files in sequence order, re-publishes unpublished events
 - <!-- §nt:a4d7d861-f545-427b-a32d-97d0c0f2408c --> **Confirmation**: `mark_published(sequence)` enables cleanup after successful delivery

✅ Accepted

Workspace and Dependency Management
View Suggested Changes
@@ -26,9 +26,9 @@
 
 ```toml
 [workspace.dependencies]
-anyhow = "1.0.100"
-bitflags = "2.6.0"
-proptest = "1.8.0"
+anyhow = "1.0.102"
+bitflags = { version = "2.11.0", features = ["serde"] }
+proptest = "1.10.0"
 # ... other dependencies ...
 collector-core = { path = "collector-core" }
 daemoneye-lib = { path = "daemoneye-lib" }
@@ -45,13 +45,17 @@
 
 #### `bitflags`
 
-The `bitflags` crate is included as a shared dependency (version 2.6.0) and is used for managing capability flags throughout the project. This allows for efficient representation and manipulation of feature sets or permissions using bitwise operations, which is especially useful for capability reporting in monitoring and event source traits.
+The `bitflags` crate is included as a shared dependency (version 2.11.0) and is used for managing capability flags throughout the project. This allows for efficient representation and manipulation of feature sets or permissions using bitwise operations, which is especially useful for capability reporting in monitoring and event source traits.
 [`source`](https://github.com/EvilBit-Labs/DaemonEye/blob/a169b6886897bf281c27ce9d86d4738233658cd4/Cargo.toml)
 
 #### `proptest`
 
-The `proptest` crate is included as a shared dev-dependency (version 1.8.0) and is used for property-based testing. This testing approach generates a wide range of input data to validate code invariants and robustness, which is particularly valuable for testing event sources, IPC mechanisms, and other critical infrastructure.
+The `proptest` crate is included as a shared dev-dependency (version 1.10.0) and is used for property-based testing. This testing approach generates a wide range of input data to validate code invariants and robustness, which is particularly valuable for testing event sources, IPC mechanisms, and other critical infrastructure.
 [`source`](https://github.com/EvilBit-Labs/DaemonEye/blob/a169b6886897bf281c27ce9d86d4738233658cd4/Cargo.toml)
+
+#### `postcard`
+
+The `postcard` crate is used for efficient serialization with `default-features = false` and `features = ["alloc"]`. Disabling default features eliminates the `heapless` and `atomic-polyfill` transitive dependencies, which resolves RUSTSEC security advisories while maintaining the serialization functionality needed by the project.
 
 ### Member Crate `Cargo.toml` Organization
 
@@ -137,3 +141,5 @@
    ```
 
 This structure ensures maintainability, consistency, and ease of updates across the entire workspace.
+
+**Note**: Version numbers shown in documentation examples are illustrative. Always check the actual `Cargo.toml` in the repository for current dependency versions.

✅ Accepted

Note: You must be authenticated to accept/decline updates.

How did I do? Any feedback?

@coderabbitai coderabbitai bot added documentation Improvements or additions to documentation rust Pull requests that update rust code process-monitoring Process monitoring and enumeration features core-feature Core system functionality and removed dependencies Pull requests that update a dependency file testing Related to test development and test infrastructure labels Mar 17, 2026
Copy link

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

This PR primarily resolves RustSec advisory findings by adjusting dependency configuration and updating the lockfile, while also introducing several new AI/tooling configuration files and updating repo automation configuration.

Changes:

  • Updated workspace dependencies (incl. rand), adjusted postcard features to drop heapless/atomic-polyfill, and refreshed Cargo.lock.
  • Removed stale RUSTSEC ignore entries from deny.toml and updated rand trait imports to match the new rand API.
  • Adjusted a property-based test’s command-line argument length bound to reduce local flakiness; added multiple new tooling/config files (Tessl/MCP/Coderabbit) and rewrote .mergify.yml.

Reviewed changes

Copilot reviewed 23 out of 26 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
Cargo.toml Bumps workspace dependency versions; disables postcard default features to drop vulnerable/unmaintained transitive deps.
Cargo.lock Lockfile refresh reflecting new dependency graph (removes atomic-polyfill/heapless, adds new rand graph, etc.).
deny.toml Removes RUSTSEC ignore list (now empty) after dependency tree cleanup.
daemoneye-eventbus/src/task_distribution.rs Updates rand trait import to RngExt for random collector selection.
collector-core/src/load_balancer.rs Updates rand trait import to RngExt for random load-balancer selection.
procmond/tests/property_based_process_tests.rs Increases allowed per-arg command line length to reduce flaky property tests on dev machines.
procmond/tests/property_based_process_tests.proptest-regressions Adds new regression seeds captured by proptest.
docs/src/testing.md Minor workflow snippet formatting changes in docs.
tessl.json Adds Tessl configuration / vendored skill dependencies.
AGENTS.md Adds a Tessl-managed “Agent Rules” reference line.
.tessl/RULES.md Introduces Tessl-managed rules index.
.tessl/.gitignore Ignores Tessl tiles and RULES.md.
.mcp.json Adds MCP server configuration for Tessl (tessl mcp start).
.gitignore Adds ignore patterns for AI assistant artifacts (incl. Tessl tiles).
.mergify.yml Rewrites Mergify configuration (merge queue, bot approvals, protections).
.coderabbit.yaml Adds CodeRabbit configuration for automated reviews/tooling.
.github/skills/.gitignore Ignores Tessl-managed skill artifacts under .github/skills.
.gemini/skills/.gitignore Ignores Tessl-managed skill artifacts under .gemini/skills.
.gemini/settings.json Adds Gemini MCP configuration for Tessl.
.cursor/skills/.gitignore Ignores Tessl-managed skill artifacts under .cursor/skills.
.cursor/rules/.gitignore Ignores Tessl-managed Cursor rule artifacts.
.cursor/mcp.json Adds Cursor MCP configuration for Tessl.
.codex/skills/.gitignore Ignores Tessl-managed skill artifacts under .codex/skills.
.codex/config.toml Adds Codex MCP configuration for Tessl.
.claude/skills/.gitignore Ignores Tessl-managed skill artifacts under .claude/skills.
.agents/skills/.gitignore Ignores Tessl-managed skill artifacts under .agents/skills.

Comment on lines +67 to +80
- name: Auto-approve dosubot PRs
conditions:
- base = main
- author = dosubot[bot]
actions:
review:
type: APPROVE
message: Automatically approved by Mergify

- name: Keep bot PRs up to date with main
conditions:
- base = main
- -conflict
- -draft
- or:
- author = dependabot[bot]
- author = dosubot[bot]
- head ~= ^release-plz-
actions:
update: {}
- name: Auto-approve dependabot PRs
conditions:
- base = main
- author = dependabot[bot]
actions:
- Remove RULES.md from .tessl/.gitignore (file is tracked, ignore was
  contradictory)
- Rewrite AGENTS.md directive token to normal prose
- Add -draft condition to bot auto-approve rules in Mergify
- Restore 3-commit outdated PR threshold in Mergify

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copilot AI review requested due to automatic review settings March 17, 2026 06:24
The @ directive token is intentional for Tessl-managed rules.
Reverts the incorrect review fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Warning

CodeRabbit couldn't request changes on this pull request because it doesn't have sufficient GitHub permissions.

Please grant CodeRabbit Pull requests: Read and write permission and re-run the review.

👉 Steps to fix this

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.mergify.yml:
- Around line 5-13: The dosubot queue is missing a file-scoped guard allowing
non-workflow PRs to bypass full CI; update the dosubot queue_conditions to
include the same file restriction used by dependabot-workflows (e.g., "-files ~=
^(?!\\.github/workflows/)") so it only matches workflow-only changes, and also
add that same file guard to the lint-only protection condition that currently
unconditionally accepts "author = dosubot[bot]"; locate and modify the "dosubot"
queue block and the lint-only protection rule (where "author = dosubot[bot]" is
set) to include the file-pattern condition so non-workflow dosubot PRs will
route to full-CI instead of bypassing it.
- Around line 52-61: The default queue declaration named "default" is missing
queue_conditions that enforce admission-time guards; add a queue_conditions
block to the "default" queue mirroring the bot queues by requiring base = main
and label != do-not-merge so PRs targeting non-main branches or labeled
do-not-merge cannot be enqueued; keep the existing merge_conditions intact
(merge_method and merge_conditions) and ensure the new queue_conditions use the
same syntax as in the dosubot/dependabot queues.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: a36b0470-9e1d-484b-9e94-cee46109e916

📥 Commits

Reviewing files that changed from the base of the PR and between d4baa25 and 3607a5d.

⛔ Files ignored due to path filters (14)
  • .agents/skills/.gitignore is excluded by none and included by none
  • .claude/skills/.gitignore is excluded by none and included by none
  • .codex/config.toml is excluded by none and included by none
  • .codex/skills/.gitignore is excluded by none and included by none
  • .cursor/mcp.json is excluded by none and included by none
  • .cursor/rules/.gitignore is excluded by none and included by none
  • .cursor/skills/.gitignore is excluded by none and included by none
  • .gemini/settings.json is excluded by none and included by none
  • .gemini/skills/.gitignore is excluded by none and included by none
  • .gitignore is excluded by none and included by none
  • .tessl/.gitignore is excluded by none and included by none
  • .tessl/RULES.md is excluded by none and included by none
  • Cargo.lock is excluded by !**/*.lock and included by none
  • daemoneye-eventbus/src/task_distribution.rs is excluded by none and included by none
📒 Files selected for processing (12)
  • .coderabbit.yaml
  • .github/skills/.gitignore
  • .mcp.json
  • .mergify.yml
  • AGENTS.md
  • Cargo.toml
  • collector-core/src/load_balancer.rs
  • deny.toml
  • docs/src/testing.md
  • procmond/tests/property_based_process_tests.proptest-regressions
  • procmond/tests/property_based_process_tests.rs
  • tessl.json

Comment on lines +52 to +61
- name: default
merge_method: squash
merge_conditions:
- check-success = quality
- check-success = test
- "check-success = test-cross-platform (macos-15, macOS)"
- "check-success = test-cross-platform (windows-2022, Windows)"
- "check-success = test-cross-platform (ubuntu-22.04, Linux)"
- check-success = coverage
- check-success = DCO
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

find . -name ".mergify.yml" -type f

Repository: EvilBit-Labs/DaemonEye

Length of output: 80


🏁 Script executed:

cat ./.mergify.yml

Repository: EvilBit-Labs/DaemonEye

Length of output: 5957


🌐 Web query:

Mergify queue_conditions admission merge_conditions timing documentation

💡 Result:

  • queue_conditions (admission / enqueueing): These conditions are evaluated to decide whether a PR can be accepted into a merge queue. If autoqueue: true, the PR is added as soon as it matches queue_conditions (you can even omit CI from queue_conditions to “queue early”). If you use the queue action, the PR still must match the queue rule’s queue_conditions to actually enter the queue. [1], [2]

  • merge_conditions (merge gate at the front): These conditions are evaluated to decide whether a queued PR can be merged once it reaches the front of the queue (typically stricter: full CI, approvals, etc.). For merge-queue “draft/temporary PR” operation, check-related merge conditions are evaluated against the temporary PR, not the original. [1]

  • Timing-related knobs/fields (queue processing):

    • batch_max_wait_time: how long Mergify may wait to form a batch (default shown as 30s). [1]
    • checks_timeout: how long the queue waits for pending checks before dequeueing (min 60s). [1]
    • Condition attributes you can use/inspect include queued-at and queue-merge-started-at timestamps. [3]

Sources:
[1] Mergify Docs — “Using Queue Rules” (queue_rules, queue_conditions vs merge_conditions, autoqueue, timing options) (docs.mergify.com)
[2] Mergify Docs — “Queue” action (still must satisfy queue_conditions; name parameter behavior) (docs.mergify.com)
[3] Mergify Docs — “Conditions” reference (queued-at, queue-merge-started-at) (docs.mergify.com)

Citations:


Add queue_conditions to the default queue to enforce base-branch and merge-policy guards.

The default queue lacks queue_conditions, unlike all three bot queues (dosubot, dependabot-workflows, dependabot), which each enforce base = main and label != do-not-merge at admission time. Without these guards, /queue can admit PRs against non-main branches or flagged with do-not-merge. Mergify evaluates queue_conditions during enqueueing and merge_conditions only at the front—so these admission controls are essential for policy consistency. Copy the same base and label guards to the default queue for operator safety.

Suggested fix
   - name: default
     merge_method: squash
+    queue_conditions:
+      - base = main
+      - label != do-not-merge
     merge_conditions:
       - check-success = quality
       - check-success = test
       - "check-success = test-cross-platform (macos-15, macOS)"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: default
merge_method: squash
merge_conditions:
- check-success = quality
- check-success = test
- "check-success = test-cross-platform (macos-15, macOS)"
- "check-success = test-cross-platform (windows-2022, Windows)"
- "check-success = test-cross-platform (ubuntu-22.04, Linux)"
- check-success = coverage
- check-success = DCO
- name: default
merge_method: squash
queue_conditions:
- base = main
- label != do-not-merge
merge_conditions:
- check-success = quality
- check-success = test
- "check-success = test-cross-platform (macos-15, macOS)"
- "check-success = test-cross-platform (windows-2022, Windows)"
- "check-success = test-cross-platform (ubuntu-22.04, Linux)"
- check-success = coverage
- check-success = DCO
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.mergify.yml around lines 52 - 61, The default queue declaration named
"default" is missing queue_conditions that enforce admission-time guards; add a
queue_conditions block to the "default" queue mirroring the bot queues by
requiring base = main and label != do-not-merge so PRs targeting non-main
branches or labeled do-not-merge cannot be enqueued; keep the existing
merge_conditions intact (merge_method and merge_conditions) and ensure the new
queue_conditions use the same syntax as in the dosubot/dependabot queues.

@coderabbitai coderabbitai bot added dependencies Pull requests that update a dependency file serialization Serialization/deserialization related testing Related to test development and test infrastructure and removed documentation Improvements or additions to documentation rust Pull requests that update rust code process-monitoring Process monitoring and enumeration features core-feature Core system functionality labels Mar 17, 2026
Copy link

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

This PR resolves outstanding RustSec advisories by adjusting dependency feature flags and cleaning up cargo-deny advisory handling, alongside small API-migration and test-stability updates.

Changes:

  • Remove the atomic-polyfill advisory path by disabling postcard default features (keeping alloc) and update workspace dependencies/lockfile accordingly.
  • Update rand call sites to the RngExt trait after the rand upgrade.
  • Reduce CI noise/flakiness via a relaxed command-line argument length bound in property tests, plus assorted tooling/config/documentation updates.

Reviewed changes

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

Show a summary per file
File Description
Cargo.toml Updates workspace dependency versions and disables postcard default features to drop advisory-bearing transitive deps.
Cargo.lock Reflects dependency graph changes (removes atomic-polyfill/heapless, upgrades crates, adds rand 0.10.0).
deny.toml Removes advisory ignore list and sets ignore = [] to enforce “no ignored advisories”.
collector-core/src/load_balancer.rs Migrates rand usage to RngExt for random_range.
daemoneye-eventbus/src/task_distribution.rs Migrates rand usage to RngExt for random_range.
procmond/tests/property_based_process_tests.rs Raises per-argument command-line length upper bound to reduce real-world flakiness.
procmond/tests/property_based_process_tests.proptest-regressions Adds new regression seeds corresponding to the updated property tests.
SECURITY.md Updates accepted-risk/advisory history and review dates to reflect resolved advisories.
docs/src/testing.md mdformat-style tweak to the documented workflow_dispatch input example.
.mergify.yml Reworks Mergify configuration to use merge queues and expands protections/automation logic.
tessl.json Adds Tessl dependency configuration for vendored skill tiles.
.tessl/RULES.md Adds Tessl-managed rules index pointing to tile rule/steering docs.
.tessl/.gitignore Ignores Tessl-downloaded tiles directory.
.mcp.json Adds MCP server configuration for Tessl integration.
.gitignore Adds ignore rules for various AI assistant/tooling artifacts and Tessl tile directories.
AGENTS.md Adds a pointer to Tessl-managed agent rules.
.coderabbit.yaml Adds CodeRabbit review configuration for automated code review tooling.
.github/skills/.gitignore Ignores Tessl-managed skill artifacts in GitHub skills directory.
.gemini/skills/.gitignore Ignores Tessl-managed skill artifacts in Gemini skills directory.
.gemini/settings.json Adds MCP server config for Gemini integration.
.cursor/skills/.gitignore Ignores Tessl-managed skill artifacts in Cursor skills directory.
.cursor/rules/.gitignore Ignores Tessl-managed Cursor rule artifacts.
.cursor/mcp.json Adds MCP server config for Cursor integration.
.codex/skills/.gitignore Ignores Tessl-managed skill artifacts in Codex skills directory.
.codex/config.toml Adds MCP server config for Codex integration.
.claude/skills/.gitignore Ignores Tessl-managed skill artifacts in Claude skills directory.
.agents/skills/.gitignore Ignores Tessl-managed skill artifacts in agents skills directory.

}
},
"cisco/software-security": {
"version": "1.2.5"
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

♻️ Duplicate comments (4)
.mergify.yml (4)

52-61: ⚠️ Potential issue | 🟡 Minor

Missing queue_conditions on default queue.

Unlike the bot queues which enforce base = main and label != do-not-merge at admission time, the default queue has no queue_conditions. This means /queue can admit PRs targeting non-main branches or flagged do-not-merge—they'll only fail at merge time after wasting queue resources.

Add admission guards:

   - name: default
     merge_method: squash
+    queue_conditions:
+      - base = main
+      - label != do-not-merge
     merge_conditions:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.mergify.yml around lines 52 - 61, The default queue block named "default"
is missing queue_conditions, so add admission guards to the "default" queue to
match the bot queues: include a queue_conditions entry that requires base = main
and label != do-not-merge (i.e., ensure PR target branch is main and the PR does
not have the do-not-merge label) so PRs are rejected at admission time rather
than wasting queue resources.

146-151: ⚠️ Potential issue | 🔴 Critical

Lint-only protection accepts dosubot unconditionally.

The or block at line 147-148 matches author = dosubot[bot] without the file guard that dependabot gets (lines 149-151). This means dosubot PRs touching source code satisfy only the lint check while dependabot PRs touching source code correctly require full CI.

Apply symmetric file guards:

     if:
       - base = main
       - or:
-          - author = dosubot[bot]
+          - and:
+              - author = dosubot[bot]
+              - "-files ~= ^(?!\\.github/workflows/)"
           - and:
               - author = dependabot[bot]
               - "-files ~= ^(?!\\.github/workflows/)"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.mergify.yml around lines 146 - 151, The or-block currently permits author =
dosubot[bot] without the file guard that the author = dependabot[bot] branch
has; add the same files protection (-files ~= ^(?!\\.github/workflows/)) under
the author = dosubot[bot] branch so both rules require the file-pattern guard,
keeping the existing structure of the or block and mirroring the dependabot
entry.

5-13: ⚠️ Potential issue | 🔴 Critical

Security bypass: dosubot queue lacks file-scope guard.

This queue admits any dosubot[bot] PR with only the quality check required for merge. Unlike dependabot-workflows (line 25), there's no -files ~= ^(?!\\.github/workflows/) restriction. Combined with auto-approval (lines 67-75) and exclusion from full CI (lines 124-125), dosubot can merge arbitrary code changes with only lint passing.

Add the same file guard used by dependabot-workflows:

     queue_conditions:
       - base = main
       - label != do-not-merge
       - author = dosubot[bot]
+      - "-files ~= ^(?!\\.github/workflows/)"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.mergify.yml around lines 5 - 13, The dosubot merge queue (name: dosubot)
lacks the file-scope guard present on dependabot-workflows; add the same
file-filter condition to the dosubot queue so it only auto-queues PRs that do
not change arbitrary repo files (i.e. add the -files ~=
^(?!\\.github/workflows/) condition into the dosubot queue_conditions block),
mirroring the dependabot-workflows configuration to prevent dosubot from merging
arbitrary code changes.

67-75: ⚠️ Potential issue | 🟠 Major

Auto-approval for dosubot lacks file restriction.

This rule unconditionally approves all dosubot[bot] PRs regardless of what files they touch. Combined with the unguarded queue admission (lines 5-13), this creates an approval pipeline for non-workflow code changes that bypasses human review.

Either scope the auto-approval to workflow-only changes:

   - name: Auto-approve dosubot PRs
     conditions:
       - base = main
       - -draft
       - author = dosubot[bot]
+      - "-files ~= ^(?!\\.github/workflows/)"

Or rely on queue-level file guards and remove this rule for dosubot entirely if the bot should never touch non-workflow files.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.mergify.yml around lines 67 - 75, The "Auto-approve dosubot PRs" Mergify
rule currently approves any PR authored by dosubot[bot] unconditionally; update
the rule (named "Auto-approve dosubot PRs") to either remove it entirely if
dosubot must never approve non-workflow changes, or add a files condition
restricting it to only workflow/CI files (e.g., add a condition such as
"files~=(^\\.github/workflows/|^\\.github/)" or similar pattern) so the
actions.review (type: APPROVE) only triggers for workflow-only changes; ensure
you keep the author = dosubot[bot] condition and modify the conditions block
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In @.mergify.yml:
- Around line 52-61: The default queue block named "default" is missing
queue_conditions, so add admission guards to the "default" queue to match the
bot queues: include a queue_conditions entry that requires base = main and label
!= do-not-merge (i.e., ensure PR target branch is main and the PR does not have
the do-not-merge label) so PRs are rejected at admission time rather than
wasting queue resources.
- Around line 146-151: The or-block currently permits author = dosubot[bot]
without the file guard that the author = dependabot[bot] branch has; add the
same files protection (-files ~= ^(?!\\.github/workflows/)) under the author =
dosubot[bot] branch so both rules require the file-pattern guard, keeping the
existing structure of the or block and mirroring the dependabot entry.
- Around line 5-13: The dosubot merge queue (name: dosubot) lacks the file-scope
guard present on dependabot-workflows; add the same file-filter condition to the
dosubot queue so it only auto-queues PRs that do not change arbitrary repo files
(i.e. add the -files ~= ^(?!\\.github/workflows/) condition into the dosubot
queue_conditions block), mirroring the dependabot-workflows configuration to
prevent dosubot from merging arbitrary code changes.
- Around line 67-75: The "Auto-approve dosubot PRs" Mergify rule currently
approves any PR authored by dosubot[bot] unconditionally; update the rule (named
"Auto-approve dosubot PRs") to either remove it entirely if dosubot must never
approve non-workflow changes, or add a files condition restricting it to only
workflow/CI files (e.g., add a condition such as
"files~=(^\\.github/workflows/|^\\.github/)" or similar pattern) so the
actions.review (type: APPROVE) only triggers for workflow-only changes; ensure
you keep the author = dosubot[bot] condition and modify the conditions block
accordingly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 09813ebd-34a0-4cee-924d-dd5d61f3c9ff

📥 Commits

Reviewing files that changed from the base of the PR and between 3607a5d and e47e4e5.

⛔ Files ignored due to path filters (1)
  • .tessl/.gitignore is excluded by none and included by none
📒 Files selected for processing (2)
  • .mergify.yml
  • SECURITY.md

@unclesp1d3r unclesp1d3r enabled auto-merge (squash) March 17, 2026 06:33
@unclesp1d3r unclesp1d3r disabled auto-merge March 17, 2026 06:48
@unclesp1d3r unclesp1d3r merged commit 5d81bcc into main Mar 17, 2026
15 of 16 checks passed
@unclesp1d3r unclesp1d3r deleted the 131-rustsec-2023-0089-atomic-polyfill-is-unmaintained branch March 17, 2026 06:48
@codecov
Copy link

codecov bot commented Mar 17, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file security Security-related issues and vulnerabilities serialization Serialization/deserialization related size:L This PR changes 100-499 lines, ignoring generated files. testing Related to test development and test infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RUSTSEC-2023-0089: atomic-polyfill is unmaintained

2 participants