test(#831): add failing tests for verbatim-hashed fragments (B_payload/H_payload, no-self-ref, source-invalidation)

This commit is contained in:
ms-lead-reviewer
2026-07-19 15:05:43 -05:00
parent e4d7d4502d
commit 083dde24a1
2 changed files with 160 additions and 1 deletions

View File

@@ -25,7 +25,7 @@
"lint": "eslint src", "lint": "eslint src",
"typecheck": "tsc --noEmit", "typecheck": "tsc --noEmit",
"test": "vitest run --passWithNoTests && pnpm run test:framework-shell", "test": "vitest run --passWithNoTests && pnpm run test:framework-shell",
"test:framework-shell": "python3 src/lease-broker/daemon_deadline_unittest.py && python3 src/mutator-gate/runtime_tools_unittest.py && python3 src/mutator-gate/runtime_launch_guard_unittest.py && python3 framework/tools/lease-broker/check-runtime-launches.py --root ../.. && bash framework/tools/codex/test-pr-diff-context.sh" "test:framework-shell": "python3 src/lease-broker/daemon_deadline_unittest.py && python3 src/lease-broker/normative_fragments_unittest.py && python3 src/mutator-gate/runtime_tools_unittest.py && python3 src/mutator-gate/runtime_launch_guard_unittest.py && python3 framework/tools/lease-broker/check-runtime-launches.py --root ../.. && bash framework/tools/codex/test-pr-diff-context.sh"
}, },
"dependencies": { "dependencies": {
"@mosaicstack/brain": "workspace:*", "@mosaicstack/brain": "workspace:*",

View File

@@ -0,0 +1,159 @@
#!/usr/bin/env python3
"""RED-first contract tests for verbatim-hashed normative fragments."""
from __future__ import annotations
import hashlib
import importlib.util
import tempfile
import unittest
from pathlib import Path
MODULE_PATH = Path(__file__).parents[2] / "framework/tools/lease-broker/normative_fragments.py"
def shipped_module():
# Each test reaches the shipped implementation; no test doubles or local
# reimplementation of construction are allowed on this admission surface.
assert MODULE_PATH.is_file(), f"shipped construction module is missing: {MODULE_PATH}"
spec = importlib.util.spec_from_file_location("normative_fragments", MODULE_PATH)
if spec is None or spec.loader is None:
raise RuntimeError("unable to load normative fragment construction")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def fragment(module, source_id: str, content: bytes):
return module.NormativeFragment(
source_id=source_id,
content=content,
expected_sha256=hashlib.sha256(content).hexdigest(),
)
def valid_fragments(module):
return [
fragment(module, "authority/constitution", b"Constitution\n"),
fragment(module, "authority/runtime", b"Runtime\n"),
]
class NormativeFragmentsTest(unittest.TestCase):
def test_t24_claude_and_pi_builders_are_byte_identical_and_one_way(self) -> None:
module = shipped_module()
fragments = valid_fragments(module)
claude = module.build_for_claude(
manifest_version=1,
generator_version="wi4-test",
fragments=fragments,
)
pi = module.build_for_pi(
manifest_version=1,
generator_version="wi4-test",
fragments=fragments,
)
self.assertEqual(claude.injectionDecision, "ACCEPTED")
self.assertTrue(claude.promotion)
self.assertEqual(claude.b_payload, pi.b_payload)
self.assertEqual(claude.h_payload, pi.h_payload)
self.assertEqual(
claude.h_payload,
hashlib.sha256(module.HASH_DOMAIN_SEPARATOR + module.length_frame([claude.b_payload])).hexdigest(),
)
self.assertNotIn(b"h_payload", claude.b_payload)
mutated_fragment = module.build_for_claude(
manifest_version=1,
generator_version="wi4-test",
fragments=[
fragment(module, "authority/constitution", b"Constitution changed\n"),
fragment(module, "authority/runtime", b"Runtime\n"),
],
)
mutated_metadata = module.build_for_claude(
manifest_version=2,
generator_version="wi4-test",
fragments=fragments,
)
self.assertNotEqual(claude.h_payload, mutated_fragment.h_payload)
self.assertNotEqual(claude.h_payload, mutated_metadata.h_payload)
def test_length_framing_and_domain_separation_prevent_ambiguous_construction(self) -> None:
module = shipped_module()
left = module.length_frame([b"ab", b"c"])
right = module.length_frame([b"a", b"bc"])
self.assertNotEqual(left, right)
self.assertNotEqual(
hashlib.sha256(module.HASH_DOMAIN_SEPARATOR + left).hexdigest(),
hashlib.sha256(module.HASH_DOMAIN_SEPARATOR + right).hexdigest(),
)
self.assertNotEqual(
hashlib.sha256(module.HASH_DOMAIN_SEPARATOR + left).hexdigest(),
hashlib.sha256(b"other-context\x00" + left).hexdigest(),
)
def test_source_invalidation_missing_refuses_real_construction_and_promotion(self) -> None:
module = shipped_module()
missing = module.NormativeFragment(
source_id="authority/missing",
content=None,
expected_sha256=hashlib.sha256(b"missing").hexdigest(),
)
result = module.build_for_claude(
manifest_version=1,
generator_version="wi4-test",
fragments=[missing],
)
self.assertEqual(result.injectionDecision, "REFUSED")
self.assertFalse(result.promotion)
self.assertEqual(result.source_reason, "missing")
self.assertIsNone(result.b_payload)
self.assertIsNone(result.h_payload)
def test_source_invalidation_oversize_refuses_real_construction_and_promotion(self) -> None:
module = shipped_module()
content = b"x" * (module.MAX_FRAGMENT_BYTES + 1)
oversize = fragment(module, "authority/oversize", content)
result = module.build_for_pi(
manifest_version=1,
generator_version="wi4-test",
fragments=[oversize],
)
self.assertEqual(result.injectionDecision, "REFUSED")
self.assertFalse(result.promotion)
self.assertEqual(result.source_reason, "oversize")
self.assertIsNone(result.b_payload)
self.assertIsNone(result.h_payload)
def test_source_invalidation_hash_mismatch_refuses_real_construction_and_promotion(self) -> None:
module = shipped_module()
mismatch = module.NormativeFragment(
source_id="authority/hash-mismatch",
content=b"trusted bytes",
expected_sha256=hashlib.sha256(b"different bytes").hexdigest(),
)
result = module.build_for_claude(
manifest_version=1,
generator_version="wi4-test",
fragments=[mismatch],
)
self.assertEqual(result.injectionDecision, "REFUSED")
self.assertFalse(result.promotion)
self.assertEqual(result.source_reason, "hash-mismatch")
self.assertIsNone(result.b_payload)
self.assertIsNone(result.h_payload)
if __name__ == "__main__":
unittest.main()