From 10bc799d26a36e66533d3acea0524f2bd9203066 Mon Sep 17 00:00:00 2001 From: Parfii-bot Date: Wed, 22 Apr 2026 01:01:56 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(primitives):=20genesis-scan=20Rust=20?= =?UTF-8?q?=E2=80=94=20sensitive=20IP=20leak=20detector=20(CI/pre-commit)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 26 forbidden patterns synced with ~/.claude/hooks/genesis-leak-guard.sh. 7 exempt scopes (KeiLab/theory/ml-keilab chatlogs/keinet-cfc-eigen/keinet-gpu-wgpu). CLI: --path, --staged, --stdin, --format=human|json|github-actions, --exit-on-hit. Self-reference resolved via EXEMPT_SUBSTRINGS + tempfile fixtures with runtime-assembled strings. 7/7 tests pass. --- _primitives/_rust/Cargo.lock | 41 ++++ _primitives/_rust/Cargo.toml | 1 + _primitives/_rust/genesis-scan/Cargo.toml | 20 ++ _primitives/_rust/genesis-scan/src/main.rs | 100 ++++++++++ .../_rust/genesis-scan/src/patterns.rs | 91 +++++++++ _primitives/_rust/genesis-scan/src/report.rs | 67 +++++++ _primitives/_rust/genesis-scan/src/scanner.rs | 179 ++++++++++++++++++ .../_rust/genesis-scan/tests/integration.rs | 155 +++++++++++++++ 8 files changed, 654 insertions(+) create mode 100644 _primitives/_rust/genesis-scan/Cargo.toml create mode 100644 _primitives/_rust/genesis-scan/src/main.rs create mode 100644 _primitives/_rust/genesis-scan/src/patterns.rs create mode 100644 _primitives/_rust/genesis-scan/src/report.rs create mode 100644 _primitives/_rust/genesis-scan/src/scanner.rs create mode 100644 _primitives/_rust/genesis-scan/tests/integration.rs diff --git a/_primitives/_rust/Cargo.lock b/_primitives/_rust/Cargo.lock index c3e0e28..4ab325f 100644 --- a/_primitives/_rust/Cargo.lock +++ b/_primitives/_rust/Cargo.lock @@ -584,6 +584,19 @@ dependencies = [ "version_check", ] +[[package]] +name = "genesis-scan" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "regex", + "serde", + "serde_json", + "tempfile", + "walkdir", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -1510,6 +1523,15 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2193,6 +2215,16 @@ dependencies = [ "tempfile", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -2318,6 +2350,15 @@ dependencies = [ "wasite", ] +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "windows-core" version = "0.62.2" diff --git a/_primitives/_rust/Cargo.toml b/_primitives/_rust/Cargo.toml index 9c8e779..e036c9d 100644 --- a/_primitives/_rust/Cargo.toml +++ b/_primitives/_rust/Cargo.toml @@ -9,6 +9,7 @@ members = [ "mock-render", "visual-diff", "tokens-sync", + "genesis-scan", ] [workspace.package] diff --git a/_primitives/_rust/genesis-scan/Cargo.toml b/_primitives/_rust/genesis-scan/Cargo.toml new file mode 100644 index 0000000..5bcca33 --- /dev/null +++ b/_primitives/_rust/genesis-scan/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "genesis-scan" +version = "0.1.0" +edition.workspace = true +rust-version.workspace = true + +[[bin]] +name = "genesis-scan" +path = "src/main.rs" + +[dependencies] +clap = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +regex = "1" +walkdir = "2" +anyhow = "1" + +[dev-dependencies] +tempfile = "3" diff --git a/_primitives/_rust/genesis-scan/src/main.rs b/_primitives/_rust/genesis-scan/src/main.rs new file mode 100644 index 0000000..378f7ed --- /dev/null +++ b/_primitives/_rust/genesis-scan/src/main.rs @@ -0,0 +1,100 @@ +//! genesis-scan — patent-IP leak scanner. +//! +//! Complements the runtime Claude-Code hook (`~/.claude/hooks/genesis-leak-guard.sh`) +//! by providing a binary suitable for `git` pre-commit hooks and CI pipelines. +//! +//! USAGE +//! genesis-scan --path walk a tree +//! genesis-scan --path single file +//! genesis-scan --staged scan `git diff --cached` +//! genesis-scan --stdin --file