• feat(web): persona pane renders the relation_edge/1 affect model + per-value trend (v0.19.4)

    vh released this 2026-07-01 13:20:24 -07:00 | 167 commits to main since this release

    The persona/affect pane read snap.valence (the pre-#265 shape) while Worldtree now
    emits snap.relations (relation_edge/1) — so the whole trust/warmth model rendered as
    an empty "valence (0)". Now renders the real signal, self-labelled:

    • MOOD (PAD, transient): pleasure/arousal/dominance with a one-word descriptor each.
    • RELATION → (stage: <relation_context>): trust·ability / benevolence /
      integrity + warmth, each as value + evidence_count (n=) — the durable social model.
    • Per-value TREND: Δ-vs-previous (▲/▼) + a unicode sparkline auto-scaled to the value's
      own observed range (flat when sub-0.01 stable, so noise isn't amplified). History
      accumulates client-side, one sample/turn (deduped by emitted_at), capped at 24.
    • Falls back to the legacy snap.valence for an older emitter; INV-001 (no fabricated
      Tier-1 fields) + INV-004 (every cell escaped) preserved. Supersedes the #18-D2
      valence assumption + retires the stale "regard dead axis" note.

    Verified: render logic asserted in node against the REAL affect.db snapshot + a
    perturbed 2nd sample (relations rendered, no "valence (0)", Δ ▲ shown, 2-char
    sparkline builds, INV-004 holds). JS syntax clean. No server change (static served
    per-request) — refresh + drive turns to watch the trends build.

    Downloads