← Files FactIQARCHIVED FILE

tests/test_retired_publishing_tools.py

1.41 KB · Nov 2, 2026 · 12:30 UTC

↓ Download file

See the change to this file →

from pathlib import Path


ROOT = Path(__file__).resolve().parents[1]
RETIRED_NAMES = {"share_chart", "share_report", "list_my_artifacts"}


def test_public_plugin_does_not_reference_retired_publishing_tools():
    paths = [
        ROOT / "README.md",
        ROOT / ".codex-plugin/plugin.json",
        ROOT / ".claude-plugin/plugin.json",
        ROOT / ".claude-plugin/marketplace.json",
    ]
    for folder in ("commands", "skills", "references", "scripts"):
        paths.extend((ROOT / folder).rglob("*.md"))
        paths.extend((ROOT / folder).rglob("*.py"))

    offenders = {}
    for path in paths:
        text = path.read_text(encoding="utf-8")
        found = sorted(name for name in RETIRED_NAMES if name in text)
        if found:
            offenders[str(path.relative_to(ROOT))] = found

    assert not offenders, (
        "Public plugin files still reference retired FactIQ publishing tools: "
        f"{offenders}"
    )


def test_skill_stops_at_the_publishing_boundary_without_a_website_workaround():
    skill = " ".join((ROOT / "skills/factiq/SKILL.md").read_text().split())
    assert "FactIQ cannot host charts or reports publicly" in skill
    assert "Do not inspect or direct the user" in skill
    assert "legacy authenticated web interface" in skill
    assert "probe HTTP endpoints" in skill
    assert "Never call `send_feedback`" in skill
    assert "Normal OAuth connection is still supported" in skill

SHA-256: 395261b5067573c050ecda46f594530d91d67fc2ec07484540c9adeaa0a2306a