Skip to content

Commit e40baa9

Browse files
author
eastgate
committed
chore: add deny.toml, fix supply chain, resolve primalSpring audit gaps
SD-01: Create deny.toml with ecoBin v3.0 C-sys ban list (16 crates), advisory ignores for tarpc 0.34 transitives, cargo deny check passing. Discovery C→A: Remove cosmetic "BearDog" primal name from genomebin sign error message, replace with capability-agnostic wording. blake3 pure feature: eliminate cc build dependency from application. tar 0.4.44→0.4.45: fix RUSTSEC-2026-0067 and RUSTSEC-2026-0068. Stale genomebin.rs module doc cleaned (removed bash fallback reference). Made-with: Cursor
1 parent f1cc802 commit e40baa9

6 files changed

Lines changed: 102 additions & 16 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
## [Unreleased]
99

1010
### Added
11+
- `deny.toml` supply chain auditing with ecoBin v3.0 C-sys ban list (16 crates)
1112
- Workspace-level lint configuration (`[workspace.lints]`): pedantic, nursery, forbid(unsafe_code)
1213
- Release profile optimizations: LTO, codegen-units=1, strip
1314
- E2E tests: full scaffold -> build -> test -> validate lifecycle (2 tests)
@@ -18,6 +19,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1819
- server --port N/A documented in specification (sourDough is meta-primal)
1920

2021
### Changed
22+
- blake3 dependency uses `pure` feature (no C/asm build dependency)
23+
- `tar` crate updated to 0.4.45 (fixes RUSTSEC-2026-0067, RUSTSEC-2026-0068)
24+
- Removed cosmetic "BearDog" primal name from genomebin sign error message (Discovery A)
2125
- Scaffold command refactored: `scaffold.rs` (789 lines) -> `scaffold/{mod,generators,templates}.rs` (max 438)
2226
- All 3 ignored doctests rewritten to compile (native async trait syntax, edition 2024)
2327
- `sourdough-genomebin` Cargo.toml migrated to workspace metadata

Cargo.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ tracing = "0.1"
4747
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
4848

4949
# Cryptography
50-
blake3 = "1.5"
50+
blake3 = { version = "1.5", default-features = false, features = ["pure"] }
5151

5252
# RPC
5353
tarpc = { version = "0.34", features = ["tokio1", "serde1", "serde-transport"] }

STATUS.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
- [x] All `#[allow()]` replaced with `#[expect(reason)]`
1818
- [x] `cargo fmt` clean
1919
- [x] `cargo doc` zero warnings, all doctests compile (0 ignored)
20-
- [x] Zero C dependencies (Pure Rust)
20+
- [x] Zero C application dependencies (Pure Rust, blake3 `pure` feature)
21+
- [x] `cargo deny check` passing (ecoBin v3.0 C-sys ban list, supply chain audit)
22+
- [x] Zero hardcoded primal names in crate code (Discovery grade A)
2123
- [x] JSON-RPC 2.0 primary IPC with semantic `domain.verb` method naming
2224
- [x] tarpc secondary high-throughput path with `bytes::Bytes` zero-copy
2325
- [x] Edition 2024
@@ -30,8 +32,10 @@
3032
- [x] Parallel genomeBin processing implemented
3133
- [x] E2E tests: scaffold -> build -> test -> validate lifecycle
3234
- [x] WHATS_NEXT.md and START_HERE.md documentation
33-
- [ ] Cross-compilation validation (musl)
34-
- [ ] genomeBin signing (Pure Rust, sequoia-openpgp)
35+
- [x] `deny.toml` supply chain auditing (SD-01 resolved)
36+
- [x] `tar` crate updated to 0.4.45 (RUSTSEC-2026-0067, RUSTSEC-2026-0068 resolved)
37+
- [ ] Cross-compilation validation (musl) — SD-02, stretch
38+
- [ ] genomeBin signing (Pure Rust, sequoia-openpgp) — SD-03, stretch
3539

3640
## Crate Health
3741

crates/sourdough/src/commands/genomebin.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! `GenomeBin` creation and management commands.
22
//!
3-
//! This module provides genomeBin operations using the Pure Rust `sourdough-genomebin`
4-
//! library. The bash script fallback is maintained for compatibility during migration.
3+
//! Pure Rust genomeBin operations via the `sourdough-genomebin` library.
54
65
use anyhow::Result;
76
use clap::Subcommand;
@@ -128,6 +127,6 @@ fn sign_genomebin(genomebin: &Path) -> Result<()> {
128127

129128
anyhow::bail!(
130129
"genomeBin signing requires Pure Rust cryptography (sequoia-openpgp). \
131-
This will be implemented when BearDog identity services are available."
130+
This will be implemented when identity services are available via capability discovery."
132131
)
133132
}

deny.toml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# SPDX-License-Identifier: AGPL-3.0-or-later
2+
# cargo-deny configuration for sourDough
3+
# https://embarkstudios.github.io/cargo-deny/
4+
5+
[graph]
6+
targets = []
7+
all-features = true
8+
9+
[advisories]
10+
yanked = "deny"
11+
ignore = [
12+
# Transitive from tarpc 0.34 → tokio-serde → bincode v1; awaiting tarpc upstream migration.
13+
{ id = "RUSTSEC-2025-0141", reason = "bincode v1 is transitive via tarpc; no direct usage" },
14+
# Transitive from tarpc 0.34 → tracing-opentelemetry → opentelemetry_sdk 0.18.
15+
{ id = "RUSTSEC-2026-0007", reason = "opentelemetry_sdk is transitive via tarpc; no direct usage" },
16+
# Transitive from tarpc 0.34 → opentelemetry_api merged into opentelemetry crate.
17+
{ id = "RUSTSEC-2024-0387", reason = "opentelemetry_api is transitive via tarpc; awaiting tarpc upgrade" },
18+
]
19+
20+
[licenses]
21+
allow = [
22+
"MIT",
23+
"Apache-2.0",
24+
"Apache-2.0 WITH LLVM-exception",
25+
"BSD-2-Clause",
26+
"BSD-3-Clause",
27+
"ISC",
28+
"MPL-2.0",
29+
"Unicode-3.0",
30+
"Zlib",
31+
"BSL-1.0",
32+
"AGPL-3.0-or-later",
33+
"CC0-1.0",
34+
]
35+
confidence-threshold = 0.8
36+
exceptions = []
37+
38+
[licenses.private]
39+
ignore = true
40+
41+
[bans]
42+
multiple-versions = "warn"
43+
wildcards = "warn"
44+
highlight = "all"
45+
allow-wildcard-paths = true
46+
47+
# ecoBin v3.0 compliance: C-backed crates banned from application builds.
48+
# blake3 uses cc as a build-dep for optional SIMD backends; sourDough builds
49+
# with features = ["pure"] so no C code is compiled, but cc remains in the
50+
# resolved graph. iana-time-zone-haiku uses cc only on Haiku OS (not our targets).
51+
deny = [
52+
{ crate = "openssl-sys", wrappers = [] },
53+
{ crate = "openssl-src", wrappers = [] },
54+
{ crate = "native-tls", wrappers = [] },
55+
{ crate = "aws-lc-sys", wrappers = [] },
56+
{ crate = "cmake", wrappers = [] },
57+
{ crate = "cc", wrappers = ["blake3", "iana-time-zone-haiku"] },
58+
{ crate = "bindgen", wrappers = [] },
59+
{ crate = "bzip2-sys", wrappers = [] },
60+
{ crate = "curl-sys", wrappers = [] },
61+
{ crate = "libz-sys", wrappers = [] },
62+
{ crate = "pkg-config", wrappers = [] },
63+
{ crate = "vcpkg", wrappers = [] },
64+
{ crate = "zstd-sys", wrappers = [] },
65+
{ crate = "lz4-sys", wrappers = [] },
66+
{ crate = "libsqlite3-sys", wrappers = [] },
67+
{ crate = "cryptoki-sys", wrappers = [] },
68+
]
69+
70+
# Duplicate crate versions — all transitive from tarpc 0.34 (old opentelemetry,
71+
# rand 0.8, syn 1.x, thiserror 1.x) and proptest (rand 0.9). No action possible
72+
# until tarpc upgrades its dependency tree.
73+
skip = []
74+
75+
[sources]
76+
unknown-registry = "deny"
77+
unknown-git = "deny"
78+
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
79+
allow-git = []

0 commit comments

Comments
 (0)