← Files AI PsychiatryARCHIVED FILE

tests/test_semantic_assets.py

7.2 KB · Oct 2, 2026 · 00:30 UTC

↓ Download file

import json
import unittest
from pathlib import Path

from scripts.executive_control import reasoning_balance, validate_completion, validate_override
from tests.helpers import REPO, load_json, read, public_skill


NEW_SKILLS = {
    "loophole-hunter",
    "framework-red-team",
    "anti-gaming",
    "false-progress-detector",
    "blocker-validator",
    "hidden-recursion-detector",
    "strategy-laundering-detector",
    "scope-laundering-detector",
    "completion-evidence",
    "memory-validator",
    "context-balance",
    "underthinking-detector",
    "reasoning-balance",
    "investigation-floor",
    "decision-readiness",
    "root-cause-validator",
    "evidence-floor",
    "executive-override",
    "rule-conflict-resolver",
}

NEW_RULES = {
    "41-semantic-compliance.md",
    "42-false-progress.md",
    "43-completion-evidence.md",
    "44-blocker-validation.md",
    "45-hidden-recursion.md",
    "46-strategy-laundering.md",
    "47-scope-laundering.md",
    "48-memory-integrity.md",
    "49-context-balance.md",
    "50-underthinking.md",
    "51-investigation-evidence-floor.md",
    "52-reasoning-balance.md",
    "53-executive-override.md",
    "54-rule-conflict.md",
    "55-self-check.md",
}

NEW_GUIDES = {
    "semantic-compliance.md",
    "loophole-catalog.md",
    "underthinking.md",
    "reasoning-balance.md",
    "context-starvation.md",
    "sufficient-reasoning.md",
    "executive-override-conflicts.md",
}


class SemanticMachineAssetTests(unittest.TestCase):
    def test_semantic_policy_defines_meaning_based_budgets(self):
        policy = load_json(REPO / ".ai/policies/semantic-compliance.json")
        self.assertEqual(policy["strategyIdentity"], ["hypothesis", "expectedEvidence", "targetFailure", "intendedOutcome"])
        self.assertIn("requirement-completed", policy["acceptedProgress"])
        self.assertEqual(policy["causalDepth"]["ignores"], ["label", "agent", "counterReset"])
        self.assertEqual(policy["conflictPriority"][:3], ["system-platform", "user", "repository"])

    def test_machine_state_exercises_runtime_contracts(self):
        completion = load_json(REPO / ".ai/state/completion-evidence.json")
        self.assertFalse(validate_completion(completion)["complete"])
        balance = load_json(REPO / ".ai/state/reasoning-balance.json")
        self.assertEqual(reasoning_balance(balance)["reasoningState"], balance["reasoningState"])
        override = load_json(REPO / ".ai/state/executive-override.json")
        self.assertFalse(validate_override(override)["valid"])

    def test_compact_representations_and_schema_exist(self):
        for relative in [
            ".ai/policies/semantic-compliance.toon",
            ".ai/state/reasoning-balance.toon",
            ".ai/state/reasoning-balance.sjon",
            ".ai/executive-function/semantic-state.schema.json",
            ".ai/state/action-ledger.json",
        ]:
            path = REPO / relative
            self.assertTrue(path.exists(), relative)
            self.assertGreater(path.stat().st_size, 80, relative)
        schema = load_json(REPO / ".ai/executive-function/semantic-state.schema.json")
        self.assertEqual(schema["type"], "object")
        self.assertIn("reasoningState", schema["properties"])


class SemanticInstructionAssetTests(unittest.TestCase):
    def test_semantic_skills_close_forward_pressure_loopholes(self):
        public = "\n".join(
            read(public_skill(name))
            for name in [
                "anti-gaming",
                "hidden-recursion-detector",
                "reasoning-balance",
                "executive-override",
                "evidence-floor",
            ]
        )
        for required in [
            "reason, evidence, exact limit, narrow scope, exit condition",
            "explicit attempt or time limit",
            "immutable parent, caused-by, and delegated-from identifiers",
            "observed trust boundary",
            "Do not renew or stack overrides",
        ]:
            self.assertIn(required, public)

    def test_numbered_semantic_rules_have_contract_and_recovery(self):
        for name in NEW_RULES:
            text = read(REPO / ".ai/rules" / name)
            self.assertGreaterEqual(len(text.split()), 100, name)
            self.assertIn("## Semantic contract", text, name)
            self.assertIn("## Detection", text, name)
            self.assertIn("## Recovery", text, name)

    def test_guides_are_operational_and_balanced(self):
        for name in NEW_GUIDES:
            text = read(REPO / ".ai/guides" / name)
            self.assertGreaterEqual(len(text.split()), 180, name)
            self.assertIn("## Observable signals", text, name)
            self.assertIn("## Intervention", text, name)
            self.assertIn("## Stop condition", text, name)

    def test_loophole_catalog_uses_required_six_field_contract(self):
        catalog = read(REPO / ".ai/guides/loophole-catalog.md")
        rows = [line for line in catalog.splitlines() if line.startswith("| L-")]
        self.assertGreaterEqual(len(rows), 20)
        for row in rows:
            self.assertEqual(len([cell for cell in row.split("|")[1:-1]]), 6, row)

    def test_underthinking_red_team_has_all_ten_scenarios(self):
        cases = read(REPO / ".ai/tests/underthinking-cases.md")
        for number in range(1, 11):
            self.assertIn(f"## Scenario {number}", cases)
            self.assertIn(f"Expected {number}:", cases)

    def test_loophole_regressions_cover_requested_bypasses(self):
        cases = read(REPO / ".ai/tests/loophole-regression-cases.md").lower()
        for phrase in [
            "strategy laundering", "scope laundering", "false progress", "false completion",
            "false blocker", "hidden recursion", "memory poisoning", "context starvation",
            "critic", "delegation", "counter reset", "executive override",
        ]:
            self.assertIn(phrase, cases)

    def test_public_and_installed_skills_are_discoverable_and_distinct(self):
        bodies = set()
        for name in NEW_SKILLS:
            for root in ("skills", ".ai/skills"):
                path = public_skill(name) if root == "skills" else REPO / root / name / "SKILL.md"
                self.assertTrue(path.exists(), f"{root}/{name}")
                text = read(path)
                self.assertTrue(text.startswith(f"---\nname: {name}\n"), str(path))
                self.assertIn("description: Use when", text, str(path))
                self.assertIn("## Procedure", text, str(path))
                self.assertIn("## Stop condition", text, str(path))
                self.assertGreaterEqual(len(text.split()), 100, str(path))
                bodies.add(text.split("## Procedure", 1)[1])
        self.assertEqual(len(bodies), len(NEW_SKILLS) * 2)

    def test_both_enhancement_prompts_are_packaged(self):
        for name, marker in [
            ("loophole-enhancement-prompts.md", "Semantic compliance > literal compliance"),
            ("underthinking-reasoning-balance-prompt.md", "Think enough"),
        ]:
            text = read(REPO / "skills/all-the-medicine/references/skills/install-framework/references" / name)
            self.assertIn(marker.lower(), text.lower())
            self.assertGreaterEqual(len(text.split()), 800, name)


if __name__ == "__main__":
    unittest.main()

SHA-256: 135a6190f54889a87093d3d72320cc5074c9746af7b9f4862d9f01fbe14d0bdf