lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit f600dbf5bd5df8c2faa2b8e05ff7630bd043f5e1
parent 67fd557efc2d2f5344b1cf474180f3b399288b9a
Author: triesap <tyson@radroots.org>
Date:   Wed, 22 Jul 2026 02:34:49 +0000

event-codec: repair no-default all-target checks

- align unit-test cfg behavior with the established no-std crate boundary
- retain error source assertions only where the std error contract exists
- pin the raw crate-attribute witness and refresh successor authority
- make the governed serde-json no-default all-target lane pass

Diffstat:
Mcrates/event_codec/contracts/phase1_publication_artifact_v1.manifest.json | 12++++++------
Mcrates/event_codec/contracts/phase1_publication_artifact_v1.manifest.sha256 | 2+-
Mcrates/event_codec/src/lib.rs | 2+-
Mcrates/event_codec/tests/codec_error_job.rs | 13+++++++++++++
Mtools/xtask/src/contract/nip09_reconciliation.rs | 7++++++-
5 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/crates/event_codec/contracts/phase1_publication_artifact_v1.manifest.json b/crates/event_codec/contracts/phase1_publication_artifact_v1.manifest.json @@ -303,8 +303,8 @@ { "role": "operations_authority", "path": "contracts/operations.toml", - "byte_length": 75859, - "sha256": "5bd81e76f4adaad23e1ff76576152802e6abd70607f65fcc39a737920da03aeb", + "byte_length": 75850, + "sha256": "c65893a44ee7ecee0617764f84b08018141e7e249cfdfa9c8144548c7371f510", "hash_algorithm": "sha256_bytes_v1" }, { @@ -1612,8 +1612,8 @@ { "role": "public_production_source", "path": "crates/event_codec/src/lib.rs", - "byte_length": 2540, - "sha256": "872deae9f6b43b2f3f4c48794fce47f4e635f88dbc6df054bb26306976ea4745", + "byte_length": 2556, + "sha256": "f844cd20eefad594ede4fff0122b6d72081a68c15afefba7cc926b23820fcdd8", "hash_algorithm": "sha256_bytes_v1" }, { @@ -2298,8 +2298,8 @@ { "role": "superseded_nip09_contract_governance", "path": "tools/xtask/src/contract/nip09_reconciliation.rs", - "byte_length": 852224, - "sha256": "22cf608eb6dae5d25f54ff439f01bf9dad8943998b455e198fff3e53383ba176", + "byte_length": 852432, + "sha256": "971d75198770265b17e17df23ba17a6096ad687d1cf2ac0f662a2c190ab39f94", "hash_algorithm": "sha256_bytes_v1" }, { diff --git a/crates/event_codec/contracts/phase1_publication_artifact_v1.manifest.sha256 b/crates/event_codec/contracts/phase1_publication_artifact_v1.manifest.sha256 @@ -1 +1 @@ -fc0de2277097e49cf7afc6667d0c5862a4e83c2c9159c808ffd99baf3e2ba174 +0776e1d84c9366954047e75cdf12d9acc9a7108260157c3534f22067075a385a diff --git a/crates/event_codec/src/lib.rs b/crates/event_codec/src/lib.rs @@ -1,4 +1,4 @@ -#![cfg_attr(not(feature = "std"), no_std)] +#![cfg_attr(all(not(feature = "std"), not(test)), no_std)] #![cfg_attr(coverage_nightly, feature(coverage_attribute))] #![forbid(unsafe_code)] #[cfg(not(feature = "std"))] diff --git a/crates/event_codec/tests/codec_error_job.rs b/crates/event_codec/tests/codec_error_job.rs @@ -1,6 +1,7 @@ #[path = "../src/test_fixtures.rs"] mod test_fixtures; +#[cfg(feature = "std")] use std::error::Error as _; use radroots_event_codec::error::{EventEncodeError, EventParseError}; @@ -20,11 +21,13 @@ fn parse_error_display_and_source_cover_variants() { let missing = EventParseError::MissingTag("d"); assert_eq!(missing.to_string(), "missing tag: d"); assert_eq!(missing.code(), "missing_tag"); + #[cfg(feature = "std")] assert!(missing.source().is_none()); let invalid = EventParseError::InvalidTag("a"); assert_eq!(invalid.to_string(), "invalid tag structure for 'a'"); assert_eq!(invalid.code(), "invalid_tag"); + #[cfg(feature = "std")] assert!(invalid.source().is_none()); let invalid_kind = EventParseError::InvalidKind { @@ -33,6 +36,7 @@ fn parse_error_display_and_source_cover_variants() { }; assert_eq!(invalid_kind.to_string(), "invalid kind 1 (expected 30340)"); assert_eq!(invalid_kind.code(), "invalid_kind"); + #[cfg(feature = "std")] assert!(invalid_kind.source().is_none()); let parse_int = "x".parse::<u32>().expect_err("parse int error"); @@ -43,11 +47,13 @@ fn parse_error_display_and_source_cover_variants() { .contains("invalid number in 'count'") ); assert_eq!(invalid_number.code(), "invalid_number"); + #[cfg(feature = "std")] assert!(invalid_number.source().is_some()); let invalid_json = EventParseError::InvalidJson("content"); assert_eq!(invalid_json.to_string(), "invalid JSON in 'content'"); assert_eq!(invalid_json.code(), "invalid_json"); + #[cfg(feature = "std")] assert!(invalid_json.source().is_none()); } @@ -148,14 +154,17 @@ fn job_encode_error_display_covers_variants() { fn job_parse_error_display_and_source_covers_variants() { let kind = JobParseError::KindOutOfRange(u32::from(u16::MAX) + 1); assert!(kind.to_string().contains("Nostr event kind")); + #[cfg(feature = "std")] assert!(kind.source().is_none()); let missing = JobParseError::MissingTag("e"); assert_eq!(missing.to_string(), "missing tag: e"); + #[cfg(feature = "std")] assert!(missing.source().is_none()); let invalid = JobParseError::InvalidTag("status"); assert_eq!(invalid.to_string(), "invalid tag structure for 'status'"); + #[cfg(feature = "std")] assert!(invalid.source().is_none()); let invalid_number = JobParseError::InvalidNumber("amount", "x".parse::<u32>().unwrap_err()); @@ -164,17 +173,21 @@ fn job_parse_error_display_and_source_covers_variants() { .to_string() .contains("invalid number in 'amount'") ); + #[cfg(feature = "std")] assert!(invalid_number.source().is_some()); let non_whole = JobParseError::NonWholeSats("amount"); assert!(non_whole.to_string().contains("whole number of sats")); + #[cfg(feature = "std")] assert!(non_whole.source().is_none()); let overflow = JobParseError::AmountOverflow("amount"); assert!(overflow.to_string().contains("does not fit u32 sat")); + #[cfg(feature = "std")] assert!(overflow.source().is_none()); let missing_chain = JobParseError::MissingChainTag("e"); assert_eq!(missing_chain.to_string(), "missing required chain tag: e"); + #[cfg(feature = "std")] assert!(missing_chain.source().is_none()); } diff --git a/tools/xtask/src/contract/nip09_reconciliation.rs b/tools/xtask/src/contract/nip09_reconciliation.rs @@ -5312,7 +5312,12 @@ fn validate_raw_crate_attributes(relative: &str, source: &str) -> Result<(), Str "#![cfg_attr(all(not(feature=\"std\"),not(test)),no_std)]", "#![forbid(unsafe_code)]", ], - "crates/event_codec/src/lib.rs" | "crates/blossom/src/lib.rs" => &[ + "crates/event_codec/src/lib.rs" => &[ + "#![cfg_attr(all(not(feature=\"std\"),not(test)),no_std)]", + "#![cfg_attr(coverage_nightly,feature(coverage_attribute))]", + "#![forbid(unsafe_code)]", + ], + "crates/blossom/src/lib.rs" => &[ "#![cfg_attr(not(feature=\"std\"),no_std)]", "#![cfg_attr(coverage_nightly,feature(coverage_attribute))]", "#![forbid(unsafe_code)]",