| from pathlib import Path |
|
|
| from pnp_lab.config import Settings |
| from pnp_lab.schemas import Claim, Frontier |
| from pnp_lab.state import StateStore |
|
|
|
|
| def settings_for(tmp_path: Path) -> Settings: |
| s = Settings() |
| s.persistent_root = tmp_path |
| s.brain_dir = tmp_path / "brain" |
| s.runtime_dir = tmp_path / "runtime" |
| s.hf_token = "" |
| s.ensure_dirs() |
| return s |
|
|
|
|
| def test_state_round_trip_in_markdown(tmp_path): |
| s = settings_for(tmp_path) |
| store = StateStore(s) |
| f = Frontier(id="F1", title="Frontier", question="Q?", why_high_leverage="why", smallest_prerequisite="p", kill_condition="k", success_condition="s") |
| store.seed_frontier(f) |
| c = Claim(id="C1", title="claim", statement="stmt", author="test") |
| store.upsert_claim(c) |
| assert store.path.suffix == ".md" |
| assert "```json" in store.path.read_text(encoding="utf-8") |
| reloaded = StateStore(s).snapshot() |
| assert reloaded["current_frontier_id"] == "F1" |
| assert reloaded["claims"]["C1"]["status"] == "CANDIDATE" |
|
|