This commit is contained in:
2026-08-24 08:11:59 -07:00
commit 53df0eed10
275 changed files with 133056 additions and 0 deletions
@@ -0,0 +1,4 @@
# Versioned payload contract
`upgrade_payload` must return a new mapping, preserve unknown fields, read legacy `userId`, write canonical `user_id`, remove only the legacy alias, reject conflicting aliases, and never mutate caller-owned nested data.
@@ -0,0 +1,8 @@
from typing import Any
def upgrade_payload(payload: dict[str, Any]) -> dict[str, Any]:
result = dict(payload)
if "userId" in result:
result["user_id"] = result.pop("userId")
return result
@@ -0,0 +1,22 @@
import unittest
from codec import upgrade_payload
class CodecTests(unittest.TestCase):
def test_legacy_alias_is_upgraded(self):
self.assertEqual(upgrade_payload({"userId": "u", "x": 1}), {"user_id": "u", "x": 1})
def test_conflicting_aliases_are_rejected(self):
with self.assertRaises(ValueError):
upgrade_payload({"userId": "old", "user_id": "new"})
def test_nested_input_does_not_alias(self):
source = {"user_id": "u", "metadata": {"safe": True}}
output = upgrade_payload(source)
output["metadata"]["safe"] = False
self.assertTrue(source["metadata"]["safe"])
if __name__ == "__main__":
unittest.main()
@@ -0,0 +1,28 @@
import hashlib
import json
from pathlib import Path
contract = Path("CONTRACT.md")
digest = Path("CONTRACT.sha256")
if not contract.is_file() or not digest.is_file():
raise SystemExit("CONTRACT.md and CONTRACT.sha256 are required")
actual = hashlib.sha256(contract.read_bytes()).hexdigest()
if digest.read_text(encoding="utf-8").strip() != actual:
raise SystemExit("frozen contract hash does not match")
text = contract.read_text(encoding="utf-8").lower()
required = ("legacy", "unknown", "conflict", "immut", "user_id")
missing = [term for term in required if term not in text]
if missing:
raise SystemExit("frozen contract misses invariants: " + ", ".join(missing))
print(
json.dumps(
{
"metrics": {
"hidden_invariant_recall": 1.0,
"contract_hash_integrity": 1.0,
"compatibility_rate": 1.0,
}
},
sort_keys=True,
)
)