P08-03: 配置の通常操作受入

This commit is contained in:
Agent Control Runner
2026-10-14 10:17:23 +09:00
parent bf2d75c9b0
commit 7e2368f5c4
4 changed files with 180 additions and 26 deletions
@@ -739,6 +739,67 @@ class R09ApplicabilityTests(unittest.TestCase):
C.r09_applicability(ROOT, {'commit':C.R09_COMMIT, 'inputs':{'fixture':'original'}})
class R16EnvironmentTests(unittest.TestCase):
def setUp(self):
self.original = Path('/recorded/r09')
env = {'PATH':'/opaque/original', 'P08_PLACEMENT_ROLE':'writer',
'P08_PLACEMENT_ROOT':str(self.original/'os-pair'),
'THE_TREE_AUDIO_TEARDOWN_PROOF_DIR':str(self.original/'os-runs/writer/teardown/owned-audio'),
'THE_TREE_AUDIO_FIXTURE_CONTROL_PROOF':str(self.original/'os-runs/writer/teardown/control.json')}
self.pin = {'role':'writer', 'environment':{k:v for k,v in env.items() if k.startswith(('P08_', 'THE_TREE_'))},
'environment_sha256':hashlib.sha256(json.dumps(env, sort_keys=True).encode()).hexdigest(),
'controller_sha256':'driver', 'recorder_sha256':'recorder', 'engine_sha256':'engine',
'command':['engine', '--script', 'recorder'], 'source_map':{'source':'hash'}}
self.receipts = [copy.deepcopy(self.pin) for _ in range(3)]
def verify(self):
C.r09_environment(self.receipts, self.pin, 'writer', self.original)
def test_driver_recording_positive(self):
self.assertNotEqual(self.pin['environment_sha256'], hashlib.sha256(
json.dumps(self.pin['environment'], sort_keys=True).encode()).hexdigest())
self.verify()
def test_subset_one_receipt(self):
self.receipts[0]['environment']['P08_PLACEMENT_ROOT'] = '/changed'
with self.assertRaisesRegex(ValueError, 'R09 environment subset cross-receipt drift'): self.verify()
def test_subset_all_receipts_not_pin(self):
for r in self.receipts: r['environment']['P08_PLACEMENT_ROOT'] = '/changed'
with self.assertRaisesRegex(ValueError, 'R09 environment subset pin drift'): self.verify()
def test_hash_started_ended_difference(self):
self.receipts[0]['environment_sha256'] = '0'*64
with self.assertRaisesRegex(ValueError, 'R09 environment hash cross-receipt drift'): self.verify()
def test_hash_all_receipts_not_pin(self):
for r in self.receipts: r['environment_sha256'] = '0'*64
with self.assertRaisesRegex(ValueError, 'R09 environment hash pin drift'): self.verify()
def test_receipt_bytes_not_pin(self):
data = json.dumps(self.pin).encode()
pin = {'bytes':len(data), 'sha256':hashlib.sha256(data).hexdigest()}
C.r09_receipt_bytes(data, pin)
with self.assertRaisesRegex(ValueError, 'R09 receipt bytes drift'):
C.r09_receipt_bytes(data.replace(b'writer', b'reader'), pin)
def test_role_mismatch(self):
for r in [self.pin]+self.receipts: r['environment']['P08_PLACEMENT_ROLE'] = 'reader'
with self.assertRaisesRegex(ValueError, 'R09 environment role mismatch'): self.verify()
def test_proof_path_mismatch(self):
for field in ('THE_TREE_AUDIO_TEARDOWN_PROOF_DIR', 'THE_TREE_AUDIO_FIXTURE_CONTROL_PROOF'):
with self.subTest(field=field):
self.setUp()
for r in [self.pin]+self.receipts: r['environment'][field] = '/wrong'
with self.assertRaisesRegex(ValueError, 'R09 environment proof path mismatch'): self.verify()
def test_driver_changed_at_head(self):
C.r09_driver_bytes(b'original', b'original', b'original')
with self.assertRaisesRegex(ValueError, 'R09 driver bytes drift'):
C.r09_driver_bytes(b'original', b'changed', b'original')
class RealR05InfrastructureTests(unittest.TestCase):
"""Actual native snapshot, never a fabricated acceptance specimen."""
def setUp(self):