| from pathlib import Path |
| import tempfile |
| import unittest |
| from baim.registry import Registry,file_hash |
|
|
|
|
| class RegistryTests(unittest.TestCase): |
| def test_gates_integrity_and_rollback(self): |
| with tempfile.TemporaryDirectory() as temp: |
| root = Path(temp) |
| source = root/'checkpoint' |
| source.mkdir() |
| (source/'model.safetensors').write_bytes(b'unit-test-fixture-not-a-model') |
| registry = Registry(root/'registry') |
| try: |
| registry.register('v000',source,{}) |
| with self.assertRaisesRegex(ValueError,'MISSING_EVIDENCE'): |
| registry.promote('v000') |
| self.assertIsNone(registry.champion) |
| metrics = dict(suite_sha256='a'*64,artifact_sha256=file_hash(source/'model.safetensors'), |
| task_success_rate=.9,out_of_domain_success=.9,recovery_rate=.9,unsafe_action_rate=0, |
| premature_finish_rate=0,loop_rate=0,p95_action_ms=1000,peak_service_rss_bytes=1024**3, |
| target_hardware='linux-epyc9354p-2vcpu',evaluator_version='unit-test-only') |
| registry.register('v001',source,metrics,parent='v000') |
| registry.promote('v001') |
| self.assertEqual(registry.champion,'v001') |
| registry.register('v002',source,{**metrics,'p95_action_ms':900},parent='v001') |
| registry.promote('v002') |
| registry.rollback('v001') |
| self.assertEqual(registry.champion,'v001') |
| (root/'registry/v002/model.safetensors').write_bytes(b'changed') |
| with self.assertRaisesRegex(ValueError,'integrity'): |
| registry.promote('v002') |
| self.assertEqual(registry.champion,'v001') |
| with self.assertRaisesRegex(ValueError,'immutable'): |
| registry.register('v001',source,metrics) |
| finally: |
| registry.close() |
|
|