From 45d339e8d8f175bf9db793926769c61653092b7e Mon Sep 17 00:00:00 2001 From: Maxim Stykow Date: Tue, 28 Apr 2026 21:43:52 +0200 Subject: [PATCH 1/2] fix(copyright): filter trade-secret notice fragments Signed-off-by: Maxim Stykow --- src/copyright/refiner/copyrights_junk_patterns.rs | 1 + src/copyright/refiner/tests.rs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/copyright/refiner/copyrights_junk_patterns.rs b/src/copyright/refiner/copyrights_junk_patterns.rs index cf465569f..c82f50ad2 100644 --- a/src/copyright/refiner/copyrights_junk_patterns.rs +++ b/src/copyright/refiner/copyrights_junk_patterns.rs @@ -183,6 +183,7 @@ pub(super) static COPYRIGHTS_JUNK_PATTERNS: LazyLock> = LazyLock::new r"(?i)^copyright holder, author\b", r"(?i)^copyright holders? disclaim\b", r"(?i)^copyright and has\b", + r"(?i)^copyright and trade secrets?\b", r"(?i)^copyright and trademark\b", r"(?i)^copyright and other proprietary\b", r"(?i)^copyright in the\b", diff --git a/src/copyright/refiner/tests.rs b/src/copyright/refiner/tests.rs index 874754ba2..0f751a396 100644 --- a/src/copyright/refiner/tests.rs +++ b/src/copyright/refiner/tests.rs @@ -379,6 +379,8 @@ fn test_is_junk_copyright_patents_trade_secrets() { fn test_is_junk_copyright_trade_secrets_fragments() { assert!(is_junk_copyright("copyrights, trade secrets or")); assert!(is_junk_copyright("COPYRIGHT, TRADE SECRET OR")); + assert!(is_junk_copyright("copyright and trade secret")); + assert!(is_junk_copyright("COPYRIGHT AND TRADE SECRETS")); assert!(is_junk_copyright( "copyright, trade secret, trademark or other intellectual property rights of" )); From 112bb67fd16477783e5735c2c7a4cfddc2fab4e9 Mon Sep 17 00:00:00 2001 From: Maxim Stykow Date: Tue, 28 Apr 2026 21:44:57 +0200 Subject: [PATCH 2/2] test(copyright): add anonymized trade-secret notice regression Signed-off-by: Maxim Stykow --- .../tests_copyright_holder_pipeline.rs | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/copyright/detector/tests_copyright_holder_pipeline.rs b/src/copyright/detector/tests_copyright_holder_pipeline.rs index c92cbb50b..7b025af72 100644 --- a/src/copyright/detector/tests_copyright_holder_pipeline.rs +++ b/src/copyright/detector/tests_copyright_holder_pipeline.rs @@ -367,6 +367,36 @@ fn test_mit_intro_not_copyright_or_holder() { ); } +#[test] +fn test_confidential_notice_trade_secret_phrase_not_detected_as_copyright() { + let input = concat!( + "/*\n", + " * Copyright Acme Inc. and its affiliates.\n", + " * The information contained herein is protected by applicable copyright and trade secret law.\n", + " */\n", + ); + let (copyrights, holders, _authors) = detect_copyrights_from_text(input); + + assert!( + copyrights + .iter() + .any(|c| c.copyright == "Copyright Acme Inc. and its affiliates"), + "copyrights: {copyrights:?}" + ); + assert!( + !copyrights + .iter() + .any(|c| c.copyright == "copyright and trade secret"), + "copyrights: {copyrights:?}" + ); + assert!( + holders + .iter() + .any(|h| h.holder == "Acme Inc. and its affiliates"), + "holders: {holders:?}" + ); +} + #[test] fn test_rest_api_description_not_holder_or_copyright() { let input = "We provide developers, researchers, and students the ability to access any model using a simple REST API call. The REST API description.";