RUST DIAGNOSTICS LIFECYCLE FRAMEWORK // v0.8

Make every failure legible.

diagprint defines a diagnostic once, then carries it through the terminal, compiler tooling, editors, CI, code scanning, guarded remediation, verification, telemetry and forensic history. One structure, every surface.

DIAGPRINT // LIVE CASE 00:00:00 ·
AUTO ●

          
● CHAIN VERIFIEDUTF-8REV r42MODE scan

01 / LIFECYCLE

Not a red line.
A lifecycle.

Most error libraries stop at printing. diagprint keeps the same structured diagnostic alive from the moment you define it to the day you ask why it came back.

02 / DIAGNOSTIC LAB

Break this config.
Watch it explain itself.

Edit the file. A browser-side model of diagprint's pipeline scans it, renders the same diagnostics to six surfaces, and runs guarded fixes, including rejecting a stale one. The real work happens in Rust; this lab is a faithful sketch you can poke.

uplink/config.tomlr1

            
GUARDED REMEDIATIONbound to r1

    Only machine_applicable edits are applied. Everything else stays a suggestion.

    03 / SURFACES

    Render once.
    Land everywhere.

    The same diagnostic data renders to humans, machines, pipelines and editors. Primary and secondary labels stay structurally distinct all the way through.

    04 / SAFETY MODEL

    Explain freely.
    Mutate under guard.

    Diagnostics may explain and propose. Mutation must be explicit, structured, validated, and reject uncertainty.

    Suggested shell commands are never executed. Verification is declarative, and replay never re-applies edits.

    Stale edits are rejected, not guessed. Revision-aware rendering fails closed when source identity no longer matches.

    No crash-atomic claims. Multi-file plans validate, keep recovery state and roll back observed failures, and say so plainly.

    05 / DIAGNOSTIC FORENSICS

    Not just what broke.
    What it has been doing.

    Scan history is hash-chained. Each run seals the one before it, so a case file can prove its own evidence. The chain below is hashed live in your browser with SHA-256. Edit any run and watch verification catch it.

    ● active▲ severity+◆ changed○ resolved↻ reappeared· absent
    CHAIN VERIFIED
    .diagprint/history7f23a9d5c120
    
              
            
    why ✓timeline ✓blame ✓causal graph ✓replay ✓

    06 / ECOSYSTEM

    Speaks every
    error dialect.

    A workspace of focused crates, plus structured bridges to the libraries your code already uses. Bridges keep relationships intact instead of flattening them into strings.

    INTEROP anyhowtracingmiettecodespan-reportingariadneannotate-snippetserror-stackrustc JSONcargo messages

    07 / QUICK START

    Ten lines to
    your first diagnostic.

    Rust 2024, MSRV 1.85. Every optional feature is off by default. Tick the ones you want and the manifest writes itself.

    src/main.rsrust
    use diagprint::{Reporter, Severity};
    
    fn main() -> std::io::Result<()> {
        let reporter = Reporter::builder()
            .application("myapp")
            .min_severity(Severity::Info)
            .build()?;
    
        let diagnostic = reporter
            .error("Network initialization failed")
            .code("NET-001")
            .cause("failed to open network interface")
            .note("fallback networking is unavailable")
            .help("check interface permissions and driver state");
    
        reporter.emit(&diagnostic)?;
        Ok(())
    }

    FEATURE FLAGS click to toggle

    Cargo.toml0 features