# `mix tessera.golden`
[🔗](https://github.com/the-robot-lives/tessera/blob/v0.2.0/lib/mix/tasks/tessera.golden.ex#L1)

Rewrites the checked-in goldens under `test/fixtures/` from the CURRENT
generators:

  * `persona_card.contract.golden.mjs` — the generated JS contract module
    (CONTRACT.md §2), the wire interface every consumer compiles against;
  * `persona_card.cem.json` — the Custom Elements Manifest golden;
  * `spike_widget.element.golden.mjs` — the generated Lit element module
    (from the same hand-built spec LitCodegenTest pins).
  * `derived_widget.element.golden.mjs` — the generated DERIVED Lit element
    module (fresh-tag derivation, EXTENSION-CONTRACT.md §5.8; from the
    hand-built merged spec DerivedWidgetSpec).

The ExUnit suite compares generator output against these files byte-for-byte
and FAILS when they are missing or stale — it never bootstraps them (a
self-bootstrapping golden can never fail, which is exactly why the old
contract golden was vacuous on fresh checkouts).

Regeneration is therefore an explicit, reviewed step. After an INTENTIONAL
generator change:

    MIX_ENV=test mix tessera.golden

then review the diff by eye against CONTRACT.md §2 before committing — the
contract module is the wire interface, and a silent codegen change breaks
every consumer. (MIX_ENV=test compiles `test/support`, where the
PersonaCard fixture spec lives.)

Run with `--check` to only verify the goldens are current (CI-style, no
write).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
