Some checks are pending
CI / lint-and-test (push) Waiting to run
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.
67 lines
3 KiB
Python
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
|