9ff5ed1f85
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G796GsLCvJQKVN7hwV2cDx
50 lines
2.1 KiB
Python
50 lines
2.1 KiB
Python
"""Persona composition + voice guards. Run via `uv run pytest` FROM the worktree."""
|
|
from __future__ import annotations
|
|
|
|
from lyra import persona
|
|
|
|
# core_prompt() char length on the pre-rewrite persona (measured 2026-07-08).
|
|
# The rewrite must not bloat the always-on hot path past this.
|
|
BASELINE_CORE_CHARS = 2878
|
|
|
|
|
|
def _core() -> str:
|
|
persona._sections.cache_clear() # file changed on disk since import
|
|
return persona.core_prompt()
|
|
|
|
|
|
def test_right_now_is_not_in_the_always_on_core():
|
|
# Demoted out of _CORE: its content must no longer ride every turn.
|
|
assert "Right now" not in persona._CORE
|
|
assert "are coming" not in _core() # the stale promise is gone from core
|
|
assert "player content library" not in _core()
|
|
|
|
|
|
def test_right_now_section_still_exists_and_is_accurate():
|
|
rn = persona.section("Right now")
|
|
assert rn # still a loadable situational section
|
|
assert "are coming" not in rn # stats/profiling are SHIPPED — no stale promise
|
|
assert "analyze_spot" in rn # names a real, current capability
|
|
|
|
|
|
def test_how_you_talk_carries_the_anti_tic_rules():
|
|
core = _core().lower()
|
|
# The four tics, each named as a rule (anchor phrases from the rewrite):
|
|
assert "commit" in core # menu-instead-of-pick
|
|
assert "hand the verdict back" in core # tag-question deferral
|
|
assert "don't reach for the instant silver lining" in core # reassurance reflex
|
|
assert "disagree when you disagree" in core # both-sides-ing / no-friction
|
|
|
|
|
|
def test_how_you_talk_has_real_exemplars_not_just_traits():
|
|
core = _core()
|
|
# Lifted from her own best moments — concrete voice, not labels:
|
|
assert "type every semicolon" in core # imposter-syndrome exemplar
|
|
assert "hold off on the cash game" in core # fatigue/EV judgment exemplar
|
|
|
|
|
|
def test_old_hedgy_trait_bullet_is_gone():
|
|
core = _core()
|
|
# the vague trait line the model nodded at and ignored
|
|
assert "you could consider folding" not in core
|