sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

radroots_crates_release_v1.toml (19895B)


      1 spec_id = "radroots.crates.release.v1"
      2 status = "final_architecture"
      3 date = "2026-07-26"
      4 package_count = 19
      5 edition = "2024"
      6 resolver = "3"
      7 rust_version = "1.97.1"
      8 license = "MIT OR Apache-2.0"
      9 canonical_repositories = [
     10   "https://github.com/radrootslabs/lib",
     11   "https://github.com/radrootslabs/sdk",
     12 ]
     13 
     14 [repositories.lib]
     15 url = "https://github.com/radrootslabs/lib"
     16 version = "0.1.0-alpha"
     17 packages = [
     18   "radroots_core",
     19   "radroots_identity",
     20   "radroots_blossom",
     21   "radroots_protocol",
     22   "radroots_event",
     23   "radroots_event_codec",
     24   "radroots_trade",
     25   "radroots_signing",
     26   "radroots_transport",
     27   "radroots_nostr",
     28   "radroots_nostr_connect",
     29   "radroots_secrets",
     30   "radroots_storage",
     31   "radroots_storage_sqlite",
     32   "radroots_transport_nostr",
     33   "radroots_sync",
     34   "radroots_geonames",
     35 ]
     36 
     37 [repositories.sdk]
     38 url = "https://github.com/radrootslabs/sdk"
     39 version = "0.1.0-alpha"
     40 packages = ["radroots_sdk", "radroots"]
     41 
     42 [repository_policy]
     43 new_repository_forbidden = true
     44 history_merge_forbidden = true
     45 cross_repository_dependency = "registry_version"
     46 synchronized_contract_copies_required = true
     47 
     48 [release_policy]
     49 sdk_facade_lockstep = true
     50 lower_packages_independent_semver = true
     51 public_codegen_features_forbidden = true
     52 public_to_private_edges_forbidden = true
     53 same_repository_path_and_version_required = true
     54 package_realistic_validation_required = true
     55 preview_packages_withheld = true
     56 
     57 [quality_policy.coverage]
     58 status = "temporary_heavy_development"
     59 repository = "radrootslabs/lib"
     60 scope = "all_required_workspace_crates"
     61 minimum_percent = 90.0
     62 metrics = ["executable_lines", "functions", "regions", "branches"]
     63 require_measurable_branches = true
     64 numeric_overrides_below_minimum_forbidden = true
     65 reinstatement = "future_explicit_contract_and_spec_update"
     66 
     67 [[package]]
     68 name = "radroots_core"
     69 crate = "radroots_core"
     70 publish_order_hint = 1
     71 tier = "foundation"
     72 platform = "no_std + alloc; std feature"
     73 responsibility = "Foundational value objects and deterministic invariants: decimal, currency, money, percentage, quantity, units, and pricing."
     74 default_features = ["std", "serde"]
     75 features = ["std", "serde"]
     76 required_radroots_dependencies = []
     77 optional_radroots_dependencies = []
     78 modules = [
     79   "currency",
     80   "decimal",
     81   "money",
     82   "percent",
     83   "pricing",
     84   "quantity",
     85   "unit",
     86 ]
     87 root_exports = [
     88   "Currency",
     89   "Decimal",
     90   "Money",
     91   "Percent",
     92   "Quantity",
     93   "QuantityPrice",
     94   "Unit",
     95   "Error",
     96 ]
     97 forbidden = "Identifiers, identities, event kinds, networking, persistence, clocks, filesystem paths, process behavior, or application configuration."
     98 
     99 [[package]]
    100 name = "radroots_identity"
    101 crate = "radroots_identity"
    102 publish_order_hint = 2
    103 tier = "foundation"
    104 platform = "no_std + alloc; std feature"
    105 responsibility = "Public identity and account value types: canonical public keys, identity IDs, account IDs, public profiles, and usernames."
    106 default_features = ["std", "serde"]
    107 features = ["std", "serde"]
    108 required_radroots_dependencies = []
    109 optional_radroots_dependencies = []
    110 modules = ["account", "key", "profile", "username"]
    111 root_exports = [
    112   "AccountId",
    113   "IdentityId",
    114   "PublicIdentity",
    115   "PublicKey",
    116   "Profile",
    117   "Username",
    118   "Error",
    119 ]
    120 forbidden = "Secret keys, key generation, NIP-49 encryption, keyrings, files, SQLite, runtime paths, upstream nostr::Event values, signer sessions, or host account selection."
    121 
    122 [[package]]
    123 name = "radroots_blossom"
    124 crate = "radroots_blossom"
    125 publish_order_hint = 3
    126 tier = "protocol primitive"
    127 platform = "no_std + alloc; std feature"
    128 responsibility = "Portable Blossom protocol primitives: canonical blob URLs, hashes, media descriptors, byte-verification typestates, and authorization claims."
    129 default_features = ["std", "serde"]
    130 features = ["std", "serde"]
    131 required_radroots_dependencies = []
    132 optional_radroots_dependencies = []
    133 modules = ["authorization", "descriptor", "hash", "media_type", "url"]
    134 root_exports = [
    135   "BlobUrl",
    136   "Sha256",
    137   "MediaType",
    138   "BlobDescriptor",
    139   "ByteVerifiedDescriptor",
    140   "AuthorizationClaim",
    141   "Error",
    142 ]
    143 forbidden = "HTTP clients, upload scheduling, cache management, filesystem traversal, application media policy, or global authentication state."
    144 
    145 [[package]]
    146 name = "radroots_protocol"
    147 crate = "radroots_protocol"
    148 publish_order_hint = 4
    149 tier = "versioned wire contract"
    150 platform = "no_std + alloc; std feature"
    151 responsibility = "Versioned cross-process and cross-language schemas, capability catalogs, operation descriptors, stable error reports, schema IDs, and structural validation."
    152 default_features = ["std", "serde"]
    153 features = ["std", "serde"]
    154 required_radroots_dependencies = []
    155 optional_radroots_dependencies = []
    156 modules = [
    157   "capability::v1",
    158   "error::v1",
    159   "event::v1",
    160   "runtime::v1",
    161   "radrootsd::transport_publish::v5",
    162   "schema",
    163 ]
    164 root_exports = []
    165 forbidden = "Native clients, storage, network I/O, executor/runtime ownership, domain reducers, upstream dependency types, unversioned serialized DTOs, or package names containing protocol generations."
    166 
    167 [[package]]
    168 name = "radroots_event"
    169 crate = "radroots_event"
    170 publish_order_hint = 5
    171 tier = "domain protocol model"
    172 platform = "no_std + alloc; std feature"
    173 responsibility = "Canonical Radroots event-domain models, validated event identifiers, tags, event contracts, authoring drafts, signed/verified typestates, and NIP-01 wire-neutral representations."
    174 default_features = ["std", "serde"]
    175 features = ["std", "serde", "knowledge"]
    176 required_radroots_dependencies = [
    177   "radroots_core",
    178   "radroots_identity",
    179   "radroots_blossom",
    180   "radroots_protocol",
    181 ]
    182 optional_radroots_dependencies = []
    183 modules = [
    184   "admission",
    185   "calendar",
    186   "contract",
    187   "draft",
    188   "envelope",
    189   "farm",
    190   "food",
    191   "id",
    192   "knowledge",
    193   "listing",
    194   "media",
    195   "post",
    196   "profile",
    197   "social",
    198   "tag",
    199   "trade",
    200   "wire",
    201 ]
    202 root_exports = [
    203   "Event",
    204   "GenericEventDraft",
    205   "SignedEvent",
    206   "VerifiedEvent",
    207   "EventId",
    208   "EventKind",
    209   "EventTag",
    210   "Error",
    211 ]
    212 forbidden = "Live Nostr clients, relay pools, signing backends, SQLite, outbox claims, retry scheduling, application state, or duplicate trade/order identifier concepts."
    213 
    214 [[package]]
    215 name = "radroots_event_codec"
    216 crate = "radroots_event_codec"
    217 publish_order_hint = 6
    218 tier = "deterministic algorithm"
    219 platform = "no_std + alloc where selected features permit; std feature"
    220 responsibility = "Deterministic canonical encoding, decoding, ID/signature verification, contract validation, admission, and manifest generation for Radroots events."
    221 default_features = ["std", "json"]
    222 features = ["std", "serde", "json", "knowledge", "manifests"]
    223 required_radroots_dependencies = [
    224   "radroots_event",
    225   "radroots_blossom",
    226   "radroots_protocol",
    227 ]
    228 optional_radroots_dependencies = []
    229 modules = ["admission", "canonical", "decode", "encode", "manifest", "verify"]
    230 root_exports = ["Codec", "DecodeError", "EncodeError", "VerificationError"]
    231 forbidden = "nostr-sdk clients, relay networking, persistence, background work, upstream client errors, or host configuration."
    232 
    233 [[package]]
    234 name = "radroots_trade"
    235 crate = "radroots_trade"
    236 publish_order_hint = 7
    237 tier = "domain algorithm"
    238 platform = "no_std + alloc for model/reducer; std feature"
    239 responsibility = "Trade validation, evidence models, deterministic reduction, conflict analysis, and side-effect-free workflow plans over the canonical event trade model."
    240 default_features = ["std", "serde", "json"]
    241 features = ["std", "serde", "json"]
    242 required_radroots_dependencies = [
    243   "radroots_core",
    244   "radroots_identity",
    245   "radroots_event",
    246 ]
    247 optional_radroots_dependencies = []
    248 modules = ["evidence", "model", "reducer", "validation", "workflow"]
    249 root_exports = [
    250   "Projection",
    251   "ReductionInput",
    252   "ReducerIssue",
    253   "WorkflowPlan",
    254   "ValidationError",
    255   "Error",
    256 ]
    257 forbidden = "A second TradeId definition, actor authorization, signers, event-store access, SQLx, filesystem state, transport delivery, outbox mutation, or process scheduling."
    258 
    259 [[package]]
    260 name = "radroots_signing"
    261 crate = "radroots_signing"
    262 publish_order_hint = 8
    263 tier = "host SPI"
    264 platform = "no_std + alloc core; std feature"
    265 responsibility = "Object-safe author/signing SPI, actor provenance, authorization checks, requests, receipts, progress, capabilities, and normalized signing errors."
    266 default_features = ["std", "serde"]
    267 features = ["std", "serde"]
    268 required_radroots_dependencies = [
    269   "radroots_identity",
    270   "radroots_event",
    271   "radroots_protocol",
    272 ]
    273 optional_radroots_dependencies = []
    274 modules = [
    275   "actor",
    276   "capability",
    277   "error",
    278   "request",
    279   "receipt",
    280   "signer",
    281   "status",
    282 ]
    283 root_exports = [
    284   "Actor",
    285   "Signer",
    286   "SignRequest",
    287   "SignReceipt",
    288   "SignerStatus",
    289   "Error",
    290 ]
    291 forbidden = "Raw secret-key ownership, keyrings, relay networking, NIP-46 session persistence, SQL, UI prompts, or executor creation."
    292 
    293 [[package]]
    294 name = "radroots_transport"
    295 crate = "radroots_transport"
    296 publish_order_hint = 9
    297 tier = "network SPI"
    298 platform = "no_std + alloc data model; std feature"
    299 responsibility = "Transport-neutral target identities, capability/status models, source and sink SPIs, delivery/fetch policies, bounded requests, provenance, and normalized outcomes."
    300 default_features = ["std", "serde"]
    301 features = ["std", "serde"]
    302 required_radroots_dependencies = [
    303   "radroots_identity",
    304   "radroots_event",
    305   "radroots_protocol",
    306 ]
    307 optional_radroots_dependencies = []
    308 modules = [
    309   "capability",
    310   "endpoint",
    311   "error",
    312   "outcome",
    313   "policy",
    314   "sink",
    315   "source",
    316   "target",
    317 ]
    318 root_exports = [
    319   "TransportId",
    320   "Target",
    321   "TargetSet",
    322   "EventSource",
    323   "EventSink",
    324   "DeliveryRequest",
    325   "DeliveryReceipt",
    326   "FetchRequest",
    327   "FetchPage",
    328   "Error",
    329 ]
    330 forbidden = "Closed enums that prevent new transports, Reticulum-specific constants, Nostr URLs at the generic root, storage/outbox access, retries, scheduler ownership, or silent fallback."
    331 
    332 [[package]]
    333 name = "radroots_nostr"
    334 crate = "radroots_nostr"
    335 publish_order_hint = 10
    336 tier = "protocol adapter"
    337 platform = "no_std + alloc for conversion surface; std feature"
    338 responsibility = "Portable conversion between Radroots native event/identity types and Nostr protocol types, typed NIP helpers, and concrete local signing adapters; no live relay client."
    339 default_features = ["std", "events"]
    340 features = ["std", "events", "signing", "nip17", "blossom"]
    341 required_radroots_dependencies = [
    342   "radroots_identity",
    343   "radroots_event",
    344   "radroots_event_codec",
    345 ]
    346 optional_radroots_dependencies = ["radroots_signing", "radroots_blossom"]
    347 modules = ["blossom", "event", "filter", "key", "nip17", "signing", "tag"]
    348 root_exports = ["Error"]
    349 forbidden = "nostr-sdk relay pools, reqwest clients, runtime ownership, broad aliases of upstream nostr types at the root, account persistence, or outbox orchestration."
    350 
    351 [[package]]
    352 name = "radroots_nostr_connect"
    353 crate = "radroots_nostr_connect"
    354 publish_order_hint = 11
    355 tier = "security protocol"
    356 platform = "std for v1; protocol data kept portable"
    357 responsibility = "Nostr Connect/NIP-46 URIs, methods, permissions, requests, responses, client/server state machines, timeout-independent protocol validation, and normalized errors."
    358 default_features = ["serde"]
    359 features = ["serde"]
    360 required_radroots_dependencies = [
    361   "radroots_identity",
    362   "radroots_event",
    363   "radroots_nostr",
    364   "radroots_protocol",
    365 ]
    366 optional_radroots_dependencies = []
    367 modules = [
    368   "client",
    369   "error",
    370   "message",
    371   "method",
    372   "permission",
    373   "server",
    374   "uri",
    375 ]
    376 root_exports = [
    377   "Client",
    378   "Server",
    379   "Method",
    380   "Permission",
    381   "Request",
    382   "Response",
    383   "BunkerUri",
    384   "ClientUri",
    385   "Error",
    386 ]
    387 forbidden = "Relay-pool implementation, secret persistence, approval UI, global sessions, Tokio runtime ownership, or Myc-specific service storage."
    388 
    389 [[package]]
    390 name = "radroots_secrets"
    391 crate = "radroots_secrets"
    392 publish_order_hint = 12
    393 tier = "security SPI"
    394 platform = "no_std + alloc core; std adapters"
    395 responsibility = "Secret references, provider and key-wrapping SPIs, versioned encrypted envelopes, zeroization-safe secret handling, and explicit memory/file/keyring adapters."
    396 default_features = ["std", "serde"]
    397 features = ["std", "serde", "memory", "file", "keyring"]
    398 required_radroots_dependencies = []
    399 optional_radroots_dependencies = []
    400 modules = [
    401   "envelope",
    402   "error",
    403   "id",
    404   "provider",
    405   "wrapping",
    406   "memory",
    407   "file",
    408   "keyring",
    409 ]
    410 root_exports = [
    411   "SecretId",
    412   "SecretRef",
    413   "SecretProvider",
    414   "KeyWrapping",
    415   "EncryptedEnvelope",
    416   "Error",
    417 ]
    418 forbidden = "Public secret bytes, Clone/Debug/Serialize for secret-bearing values, identity profiles, domain tables, arbitrary key/value storage, hidden key generation, or process-global vaults."
    419 
    420 [[package]]
    421 name = "radroots_storage"
    422 crate = "radroots_storage"
    423 publish_order_hint = 13
    424 tier = "storage SPI"
    425 platform = "std for v1"
    426 responsibility = "Backend-neutral canonical event, operation journal, outbox, transport evidence, projection, private-artifact metadata, backup, status, and atomic commit interfaces, plus an in-memory reference backend."
    427 default_features = ["memory", "serde"]
    428 features = ["memory", "serde"]
    429 required_radroots_dependencies = [
    430   "radroots_event",
    431   "radroots_trade",
    432   "radroots_transport",
    433   "radroots_protocol",
    434 ]
    435 optional_radroots_dependencies = []
    436 modules = [
    437   "atomic",
    438   "backup",
    439   "event",
    440   "journal",
    441   "memory",
    442   "outbox",
    443   "private_artifact",
    444   "projection",
    445   "status",
    446 ]
    447 root_exports = [
    448   "Storage",
    449   "EventStore",
    450   "Journal",
    451   "Outbox",
    452   "ProjectionStore",
    453   "BackupSource",
    454   "StorageStatus",
    455   "Error",
    456 ]
    457 forbidden = "SQL text, SQLx pools or transactions, filesystem paths, application UI state, concrete retry loops, Nostr clients, or unconstrained raw key/value escape hatches."
    458 
    459 [[package]]
    460 name = "radroots_storage_sqlite"
    461 crate = "radroots_storage_sqlite"
    462 publish_order_hint = 14
    463 tier = "native storage backend"
    464 platform = "std-only native backend"
    465 responsibility = "SQLite implementation of the storage SPIs with schema migration, WAL, locking, integrity, backup/restore, crash recovery, and encrypted private storage."
    466 default_features = []
    467 features = []
    468 required_radroots_dependencies = [
    469   "radroots_storage",
    470   "radroots_event_codec",
    471   "radroots_secrets",
    472 ]
    473 optional_radroots_dependencies = []
    474 modules = [
    475   "backup",
    476   "config",
    477   "integrity",
    478   "lock",
    479   "migration",
    480   "open",
    481   "status",
    482 ]
    483 root_exports = ["SqliteStorage", "OpenOptions", "OpenMode", "Paths", "Error"]
    484 forbidden = "Public SqlitePool/Connection/Transaction handles, caller-supplied arbitrary SQL, Studio state, global connection pools, runtime installation, or silent schema downgrade."
    485 
    486 [[package]]
    487 name = "radroots_transport_nostr"
    488 crate = "radroots_transport_nostr"
    489 publish_order_hint = 15
    490 tier = "native network adapter"
    491 platform = "std-only; Tokio implementation detail in v1"
    492 responsibility = "Concrete Nostr EventSource/EventSink implementation: relay URL policy, connection, NIP-42 authentication, bounded fetch pages, delivery, status, and relay-outcome normalization."
    493 default_features = []
    494 features = []
    495 required_radroots_dependencies = [
    496   "radroots_transport",
    497   "radroots_nostr",
    498   "radroots_event_codec",
    499   "radroots_protocol",
    500 ]
    501 optional_radroots_dependencies = []
    502 modules = ["auth", "client", "relay", "sink", "source", "status"]
    503 root_exports = [
    504   "NostrTransport",
    505   "Config",
    506   "RelayUrl",
    507   "RelayUrlPolicy",
    508   "Error",
    509 ]
    510 forbidden = "Event-store ingestion, outbox claiming, retry scheduling, projection refresh, global relay clients, direct SQL, or transport fallback."
    511 
    512 [[package]]
    513 name = "radroots_sync"
    514 crate = "radroots_sync"
    515 publish_order_hint = 16
    516 tier = "local-first orchestration"
    517 platform = "std-only in v1; executor-neutral public API"
    518 responsibility = "Shared pull, verification, canonical admission, duplicate handling, projection refresh, outbox signing/delivery, status, and retry-decision orchestration without owning scheduling."
    519 default_features = ["serde"]
    520 features = ["serde"]
    521 required_radroots_dependencies = [
    522   "radroots_event",
    523   "radroots_event_codec",
    524   "radroots_signing",
    525   "radroots_transport",
    526   "radroots_storage",
    527   "radroots_trade",
    528   "radroots_protocol",
    529 ]
    530 optional_radroots_dependencies = []
    531 modules = ["ingest", "policy", "projection", "pull", "push", "status"]
    532 root_exports = [
    533   "Engine",
    534   "PullRequest",
    535   "PullReceipt",
    536   "PushRequest",
    537   "PushPreparation",
    538   "PushStatus",
    539   "SigningRunReceipt",
    540   "AdmissionRunReceipt",
    541   "DeliveryExecutionReceipt",
    542   "SyncStatus",
    543   "Error",
    544 ]
    545 forbidden = "Creating an executor, spawning hidden workers, installing timers globally, owning process lifecycle, storing UI state, or transport-specific branches outside adapters."
    546 
    547 [[package]]
    548 name = "radroots_geonames"
    549 crate = "radroots_geonames"
    550 publish_order_hint = 17
    551 tier = "concrete data provider"
    552 platform = "std-only"
    553 responsibility = "GeoNames asset specification, authenticated/integrity-checked acquisition, database lifecycle, and forward/reverse locality lookup using provider-owned types."
    554 default_features = []
    555 features = []
    556 required_radroots_dependencies = []
    557 optional_radroots_dependencies = []
    558 modules = ["asset", "database", "download", "model", "query"]
    559 root_exports = [
    560   "Geocoder",
    561   "AssetSpec",
    562   "AssetStatus",
    563   "Query",
    564   "Candidate",
    565   "Point",
    566   "Error",
    567 ]
    568 forbidden = "Generic multi-provider abstraction before a second provider exists, runtime-path policy, hidden downloads, SDK configuration types, SQLx/reqwest types in the public API, or test-fixture features."
    569 
    570 [[package]]
    571 name = "radroots_sdk"
    572 crate = "radroots_sdk"
    573 publish_order_hint = 18
    574 tier = "advanced front door"
    575 platform = "std-only native engine"
    576 responsibility = "Host-neutral asynchronous client engine, product operations, capability reporting, explicit storage/signing/transport composition, diagnostics, backup/restore, and safe commit semantics."
    577 default_features = ["memory"]
    578 features = [
    579   "memory",
    580   "sqlite",
    581   "sync",
    582   "nostr",
    583   "nip46",
    584   "local-signing",
    585   "radrootsd",
    586   "geonames",
    587   "knowledge",
    588   "native",
    589   "full",
    590 ]
    591 required_radroots_dependencies = [
    592   "radroots_core",
    593   "radroots_identity",
    594   "radroots_protocol",
    595   "radroots_event",
    596   "radroots_event_codec",
    597   "radroots_trade",
    598   "radroots_signing",
    599   "radroots_transport",
    600   "radroots_storage",
    601 ]
    602 optional_radroots_dependencies = [
    603   "radroots_secrets",
    604   "radroots_storage_sqlite",
    605   "radroots_nostr",
    606   "radroots_nostr_connect",
    607   "radroots_transport_nostr",
    608   "radroots_sync",
    609   "radroots_geonames",
    610 ]
    611 modules = [
    612   "capability",
    613   "client",
    614   "diagnostics",
    615   "error",
    616   "farm",
    617   "listing",
    618   "signing",
    619   "storage",
    620   "sync",
    621   "trade",
    622   "transport",
    623 ]
    624 root_exports = ["Client", "ClientBuilder", "Error", "Result"]
    625 forbidden = "Global runtimes or subscribers, hidden workers, process signals, CLI parsing, UI state, Studio databases, raw SQLx/upstream client types, broad wildcard reexports, or a nominal no_std claim."
    626 
    627 [[package]]
    628 name = "radroots"
    629 crate = "radroots"
    630 publish_order_hint = 19
    631 tier = "ordinary-user front door"
    632 platform = "std-only"
    633 responsibility = "Canonical Rust onboarding package with curated modules, safe defaults, stable convenience builders, domain aggregation, examples, and primary documentation."
    634 default_features = ["client"]
    635 features = [
    636   "client",
    637   "native",
    638   "nostr",
    639   "nip46",
    640   "radrootsd",
    641   "geonames",
    642   "knowledge",
    643   "full",
    644 ]
    645 required_radroots_dependencies = [
    646   "radroots_sdk",
    647   "radroots_core",
    648   "radroots_identity",
    649   "radroots_event",
    650   "radroots_trade",
    651   "radroots_transport",
    652 ]
    653 optional_radroots_dependencies = []
    654 modules = [
    655   "client",
    656   "event",
    657   "farm",
    658   "identity",
    659   "knowledge",
    660   "listing",
    661   "signing",
    662   "storage",
    663   "sync",
    664   "trade",
    665   "transport",
    666 ]
    667 root_exports = ["Client", "ClientBuilder", "Error", "Result"]
    668 forbidden = "A public radroots::sdk namespace, wildcard reexport of radroots_sdk, duplicate engine implementation, CLI binary, hidden network/filesystem/keychain side effects, or exposure of every lower-crate symbol."