teleo-infrastructure/tests/test_hermes_leoclean_skill_surfaces.py
twentyOne2x 5e1d7a5b8c
Some checks are pending
CI / lint-and-test (push) Waiting to run
Render KB claim links in leoclean replies (#68)
Render KB claim links in leoclean replies.

Local evidence:
- 13 focused tests passed.
- py_compile passed for Telegram bot, both leoclean KB bridges, and KB claim routes.
- ruff F,E9 passed for touched files.

GitHub checks were queued at merge time, not failing.
2026-07-09 08:58:02 +02:00

67 lines
3 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SKILL_ROOT = ROOT / "hermes-agent" / "leoclean-skills"
def test_gcp_kb_skill_uses_cloudsql_bridge_not_vps_docker() -> None:
text = (SKILL_ROOT / "gcp" / "teleo-kb-bridge" / "SKILL.md").read_text()
assert "Cloud SQL" in text
assert "answer from the Cloud SQL KB after a bounded read" in text
assert "Do not browse the public web just because the KB has evidence gaps" in text
assert "/home/teleo/.hermes/profiles/leoclean/bin/teleo-kb" in text
assert "docker exec" not in text
assert "teleo-pg" not in text
assert "on the VPS" not in text
def test_vps_kb_skill_keeps_vps_scope_explicit() -> None:
text = (SKILL_ROOT / "vps" / "teleo-kb-bridge" / "SKILL.md").read_text()
squashed = " ".join(text.split())
assert "VPS production leoclean" in text
assert "Cloud SQL" not in text
assert "/home/teleo/.hermes/profiles/leoclean/bin/teleo-kb" in text
assert "prefer the bridge over raw database access" in text
assert "Claim / Body / Concept Map Loop" in text
assert "Status: applied | pending | missing | partially applied" in text
assert "Do not call an approved proposal \"implemented\"" in text
assert "needs reviewer/operator apply tooling rather than inviting ad hoc SQL from chat" in squashed
assert "Never end a normal Telegram answer by offering to run direct `INSERT`, `UPDATE`" in text
assert "Next admin-panel action" in text
assert "draft or refresh the admin review packet" in squashed
assert "/kb/claims/<claim_id>" in text
assert "wrap claim IDs, proposal IDs" in text
assert "claim page: https://dash.livingip.xyz/kb/claims/<claim_id>" in text
def test_gcp_kb_skill_keeps_claim_links_and_backtick_rendering() -> None:
text = (SKILL_ROOT / "gcp" / "teleo-kb-bridge" / "SKILL.md").read_text()
assert "/kb/claims/<claim_id>" in text
assert "wrap claim IDs, proposal IDs" in text
assert "claim page: https://dash.livingip.xyz/kb/claims/<claim_id>" in text
def test_leoclean_kb_skills_anchor_external_doctrine_in_target_project_language() -> None:
for surface in ("vps", "gcp"):
text = (SKILL_ROOT / surface / "teleo-kb-bridge" / "SKILL.md").read_text()
assert "External Doctrine Contributions" in text
assert "Use the target project's native language first" in text
assert "no single voice can own understanding" in text
assert "purpose precedes" in text
assert "Prefer issue-before-PR" in text
assert "Consent is action-specific" in text
def test_vps_live_telegram_skill_uses_systemd_for_gateway_liveness() -> None:
text = (SKILL_ROOT / "vps" / "live-leo-telegram" / "SKILL.md").read_text()
assert "systemctl is-active leoclean-gateway.service" in text
assert "systemctl show leoclean-gateway.service" in text
assert "hermes -p leoclean gateway run" in text
assert "Do not use `hermes -p leoclean gateway status` as authoritative" in text
assert "If you are currently replying in Telegram" in text