#![doc(html_logo_url = "https://cochranblock.org/cochranblock-hero-logo.svg")]
#![doc(html_favicon_url = "https://cochranblock.org/assets/favicon.svg")]
#![doc(html_root_url = "https://docs.rs/cochranblock")]
#![doc = include_str!("../README.md")]
pub fn verify() -> Result<(), &'static str> {
let receipts = catalog();
if receipts.is_empty() {
return Err("manual catalog is empty");
}
for r in receipts {
if r.license != "Unlicense" {
return Err("non-public-domain entry leaked into the manual");
}
if r.crate_name.is_empty() {
return Err("anonymous receipt in catalog");
}
}
Ok(())
}
#[derive(Debug, Clone, Copy)]
pub struct Receipt {
pub crate_name: &'static str,
pub purpose: &'static str,
pub license: &'static str,
}
pub const fn catalog() -> &'static [Receipt] {
&[
Receipt {
crate_name: "runsible",
purpose: "Ansible, reimagined in Rust. 14-crate workspace, ~10ms cold start.",
license: "Unlicense",
},
Receipt {
crate_name: "r8r",
purpose: "n8n workflow engine ported to Rust. axum + Leptos/WASM canvas.",
license: "Unlicense",
},
Receipt {
crate_name: "exopack",
purpose: "Testing framework with Triple-Sims quality gates.",
license: "Unlicense",
},
Receipt {
crate_name: "oakilydokily",
purpose: "Client waiver/resume site with interactive WASM mural.",
license: "Unlicense",
},
Receipt {
crate_name: "illbethejudgeofthat",
purpose: "Pro se custody case builder, email-to-PDF pipeline.",
license: "Unlicense",
},
Receipt {
crate_name: "any-gpu",
purpose: "Run AI inference on any GPU you already own.",
license: "Unlicense",
},
Receipt {
crate_name: "deglaze",
purpose: "Strip Glaze from AI-protected images for downstream analysis.",
license: "Unlicense",
},
Receipt {
crate_name: "ghost-fabric",
purpose: "Distributed mesh substrate.",
license: "Unlicense",
},
]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn manual_is_well_formed() {
verify().expect("manual catalog should be internally consistent");
}
#[test]
fn every_entry_is_public_domain() {
for r in catalog() {
assert_eq!(r.license, "Unlicense", "non-Unlicense entry: {}", r.crate_name);
}
}
#[test]
fn exopack_is_pinned() {
#[allow(unused_imports)]
use exopack as _;
}
}