"""REC-31 (A1) Phase 3: ProjectPaths.resolve_ref resolves a HYPHEN shelf hero
(the file promote_to_canonical now writes via ref_filename) — closing the
'every reader sees the promoted hero' gap. No spend."""
from pathlib import Path
from recoil.core.paths import ProjectPaths
from recoil.core.ref_stem import ref_filename


def _write_png(p: Path):
    p.parent.mkdir(parents=True, exist_ok=True)
    p.write_bytes(b"\x89PNG\r\n\x1a\n" + b"\x00" * 2048)


def test_resolve_ref_finds_hyphen_shelf_hero(tmp_path):
    pp = ProjectPaths.from_root(tmp_path)
    look = pp.asset_look_dir("char", "jade", "base")
    _write_png(look / ref_filename("jade", "identity", "png"))  # SHELF hero, hyphen stem
    resolved = pp.resolve_ref("char", "JADE", "identity")
    assert resolved.path.name == ref_filename("jade", "identity", "png")


def test_resolve_ref_still_finds_underscore_legacy(tmp_path):
    """Additive: pre-existing underscore stems keep resolving (no regression)."""
    pp = ProjectPaths.from_root(tmp_path)
    look = pp.asset_look_dir("char", "jade", "base")
    _write_png(look / "jade_identity_hero.png")  # legacy underscore stem
    resolved = pp.resolve_ref("char", "JADE", "identity")
    assert resolved.path.name == "jade_identity_hero.png"
