Files
ThothII/harness/tests/test_pi_skill_projection.py
T
Codex d8a29bfbdd Add full shell, replaceable Omics adapter and bilingual interaction
Implement approved specification #32 and tickets #33-#37. Keep host authentication server-verified and pin session interaction language. Compile scoped base selectors for browser compatibility and retain full gutters during CSS pruning.
2026-09-13 14:26:39 +02:00

56 lines
2.1 KiB
Python

import hashlib
import pytest
from tht.pi_skill_projection import (
FRAGMENT_ORDER,
PROJECTION_PATH,
projection_is_current,
render_projection,
)
# Approved session-language contract (#35); unrelated workflow fragments stay byte-identical.
BASELINE_SHA256 = "a2e6608e1aa07735ef92d96b3a87fca3bfbe3636754330ff6749178c87a37493"
def test_modular_pi_skill_renders_the_byte_identical_approved_projection():
rendered = render_projection()
assert FRAGMENT_ORDER == (
("{{EVIDENCE_RUNTIME_SEARCH}}", "evidence/runtime-search.md"),
("{{DISAMBIGUATION_OPEN_AMBIGUITY}}", "disambiguation/open-ambiguity.md"),
("{{DISAMBIGUATION_INSTRUCTIONS}}", "disambiguation/phase-1.md"),
("{{MEMORY_INSTRUCTIONS}}", "memory/phase-2.md"),
("{{DISAMBIGUATION_REWRITING_INSTRUCTIONS}}", "disambiguation/phase-3.md"),
("{{MEMORY_SOLVED_SEARCH_F4}}", "memory/solved-search-f4.md"),
("{{DISAMBIGUATION_SCHEMA_GROUNDING}}", "disambiguation/schema-grounding.md"),
("{{EVIDENCE_FORMULA_PROPOSALS}}", "evidence/formula-proposals.md"),
("{{MEMORY_SOLVED_SEARCH_F6}}", "memory/solved-search-f6.md"),
("{{MEMORY_SOLVED_SEARCH_F7}}", "memory/solved-search-f7.md"),
("{{MEMORY_PROMOTION_F8}}", "memory/phase-8-promotion.md"),
("{{MEMORY_SOLVED_FINALIZATION}}", "memory/solved-finalization.md"),
)
assert rendered == render_projection()
assert hashlib.sha256(rendered).hexdigest() == BASELINE_SHA256
assert PROJECTION_PATH.read_bytes() == rendered
def test_projection_check_detects_stale_output(tmp_path):
stale = tmp_path / "SKILL.md"
stale.write_bytes(b"stale\n")
assert projection_is_current(stale) is False
def test_projection_rejects_a_missing_or_repeated_static_placeholder():
with pytest.raises(ValueError, match="exactly once"):
render_projection(template=b"{{MEMORY_INSTRUCTIONS}}\n")
with pytest.raises(ValueError, match="exactly once"):
render_projection(
template=(
b"{{DISAMBIGUATION_INSTRUCTIONS}}\n"
b"{{MEMORY_INSTRUCTIONS}}\n"
b"{{MEMORY_INSTRUCTIONS}}\n"
)
)