haematite-cli 0.21.9

The haematite command: serve a store, its door and Studio, answer MCP, query with jq, and host the store's assistant seat
Documentation
#[test]
fn fractional_clock_precision_keeps_the_same_envelope_width()
-> Result<(), Box<dyn std::error::Error>> {
    for (nanos, expected) in [
        (0, "7.000000000"),
        (1, "7.000000001"),
        (10_000, "7.000010000"),
        (123_450_000, "7.123450000"),
    ] {
        let value = super::clock_json(std::time::Duration::new(7, nanos))?;
        assert_eq!(value.get(), expected);
        assert_eq!(value.get().len(), 11);
    }
    Ok(())
}

#[test]
fn nonzero_budget_readback() -> Result<(), Box<dyn std::error::Error>> {
    let maximum = u64::try_from(usize::MAX)?;
    let cases = [
        (7, None, 7),
        (7, Some(3), 3),
        (3, Some(7), 3),
        (7, Some(7), 7),
        (1, Some(1), 1),
        (maximum, Some(usize::MAX), usize::MAX),
    ];
    for (request, transport, expected) in cases {
        let request = std::num::NonZeroU64::new(request).ok_or("zero request")?;
        let transport = transport
            .map(|value| std::num::NonZeroUsize::new(value).ok_or("zero transport"))
            .transpose()?;
        let actual = super::budget(
            std::hint::black_box(request),
            std::hint::black_box(transport),
        )?;
        assert_eq!(actual.get(), expected);
    }
    Ok(())
}