Files
Sergio d251eb32b6 chore: refresco desde el monorepo — vello 0.9 / wgpu 29, 120 miembros
El repo publico se habia quedado en julio: el README anunciaba vello 0.7 +
wgpu 27 (dos bumps atras) y faltaban los crates del ultimo mes.

- refresco con scripts/actualizar-standalone.py --llimphi (cargo check OK)
- llegan llimphi-cpu, llimphi-hybrid, llimphi-glifos y llimphi-wire-escena:
  los cuatro caminos a pixeles con un solo compositor
- MANUAL.md / SDD.md / LEEME.md sincronizados con el monorepo
- README: versiones al dia, install por crates.io (cargo add llimphi),
  seccion "beyond the 2D widget kit" y el indice de crates que apuntaba
  al propio README ahora apunta a MANUAL.md §19
2026-08-06 17:26:11 +00:00
..

llimphi-test

Headless, deterministic golden-image harness.

The problem it closes: in PLAN-NUCLEO-RETENIDO.md and PARIDAD-FLUTTER.md every block used to end with "still to verify on metal / PNG diff pending", and CLAUDE.md §8 forbids routine render-and-look because of its token cost. This crate turns that expensive, subjective verification into assert_golden!(...): cheap, objective, in CI, certified by text (DiffStats).

Determinism

The Harness asks for a Hal through the software adapter (llimphi_hal::Hal::new_headless(true)): the llvmpipe/lavapipe rasterizer (deviceType CPU) produces the same pixel on any host and in CI, not tied to the GPU of whoever generated the golden. If the machine has no fallback adapter it falls back to the normal one, and GoldenConfig's perceptual tolerance absorbs the vendor difference.

Typical use (inside another crate's test)

use llimphi_test::assert_golden;
#[test]
fn card_with_shadow() {
    let v = my_widget::card(...);
    assert_golden!("card_with_shadow", v, 400, 240); // tests/goldens/card_with_shadow.png
}

Regenerate the goldens with LLIMPHI_GOLDEN_UPDATE=1 cargo test.


Part of llimphi — see llimphi.