amberfork-layout 1.0.0

The semantic view-model between amberfork's DiffResult and its painters (CLI, web).
Documentation

The semantic view-model over a [DiffResult] — the one seam every painter reads (issue #21, design doc Amendment 2026-07-11).

           DiffResult  (+ the two Runs)
                    │
                    ▼
            amberfork-layout
                    │
                    ▼
                ViewModel
       semantic rows (spine / fork / downstream), step summaries,
       designed wording (confidence, verdict, absence), attribution
       reading order, field-diff evidence
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
  CLI painter (render.rs)   web painter (ui/, Leptos)
  columns · glyphs · ANSI   SVG/DOM geometry

What lives here is exactly what every surface must agree on: which alignment move plays which role, the one-line gist of a step, the wording rules the design locked — confidence as conf 0.NN with the explicit marginal call at zero (notebook 005), the converged verdict that only claims "identical" when the alignment earned it (issue #19), the (no aligned step) absence — plus the attribution reading order (DR5) and the field-level evidence at the fork.

What deliberately does NOT live here is any painter's own arithmetic: column widths, truncation, wrapping, gutter glyphs, and ANSI are the CLI painter's business; pixel geometry is the web painter's. This crate has zero terminal dependencies, and styling decisions never feed back into it.

For the web painter the view crosses a wire: [Document] is the serializable form the server ships (issue #24) — the same [ViewModel] plus a [DOCUMENT_VERSION] stamp and the payload envelope: building the document cuts every payload-derived slot at [SLOT_TEXT_LIMIT] bytes with an explicit [SlotText::truncated] mark the UI must render visibly.