P08-03: 配置の通常操作受入
This commit is contained in:
@@ -146,6 +146,9 @@ def input_map(root):
|
||||
|
||||
R09_COMMIT = '31aa7706d28a92e313c432d5a62e35d19503dcc3'
|
||||
R09_DOCS = 'docs/plans/original-completion-2026-10-02/execution/p08-03'
|
||||
ENVIRONMENT_PROVENANCE = ('The P08_/THE_TREE_ subset is reconstructable and checked by direct equality; '
|
||||
'the full-env environment_sha256 is opaque and checked only by '
|
||||
'cross-receipt and pin equality, without the original os.environ.')
|
||||
|
||||
VALIDATORS = {'tools/check_p08_normal_placement_evidence.py',
|
||||
'tools/test_p08_normal_placement_evidence.py'}
|
||||
@@ -202,14 +205,50 @@ def r09_applicability(root, index):
|
||||
require(pinned['commit'] == index['commit'] and pinned['inputs'] == index['inputs'],
|
||||
'R09 runner binding drift')
|
||||
require(sha(pinned['engine']) == pinned['engine_sha256'], 'R09 engine hash drift')
|
||||
driver = 'tools/run_p08_normal_placement.py'
|
||||
baseline = subprocess.check_output(['git', '-C', str(root), 'show', R09_COMMIT+':'+driver])
|
||||
head_driver = subprocess.check_output(['git', '-C', str(root), 'show', head+':'+driver])
|
||||
r09_driver_bytes(baseline, head_driver, (root/driver).read_bytes())
|
||||
original_index = pinned_document(pins['index'])
|
||||
for role in ('writer', 'reader'):
|
||||
receipt = pinned_document(pins['OS'][role]['receipt'])
|
||||
require(receipt['engine_sha256'] == pinned['engine_sha256'], 'R09 engine hash/version drift')
|
||||
require(receipt['environment_sha256'] == hashlib.sha256(
|
||||
json.dumps(receipt['environment'], sort_keys=True).encode()).hexdigest(),
|
||||
'R09 settings/environment drift')
|
||||
require(receipt['controller_sha256'] == hashlib.sha256(baseline).hexdigest(), 'R09 controller hash drift')
|
||||
receipts = []
|
||||
for phase in ('started', 'process-started', 'ended'):
|
||||
name = 'os-runs/'+role+'/'+phase+'.json'
|
||||
path = original/name
|
||||
pin = original_index['artifacts'][name]
|
||||
r09_receipt_bytes(path.read_bytes(), pin)
|
||||
receipts.append(load(path))
|
||||
r09_environment(receipts, receipt, role, original)
|
||||
return {name:sha(root/name) for name in sorted(VALIDATORS)}
|
||||
|
||||
def r09_driver_bytes(baseline, head, working):
|
||||
require(head == baseline == working, 'R09 driver bytes drift')
|
||||
|
||||
def r09_receipt_bytes(data, pin):
|
||||
require(len(data) == pin['bytes'] and hashlib.sha256(data).hexdigest() == pin['sha256'],
|
||||
'R09 receipt bytes drift')
|
||||
|
||||
def r09_environment(receipts, pinned, role, original):
|
||||
require(all(r['environment'] == receipts[0]['environment'] for r in receipts),
|
||||
'R09 environment subset cross-receipt drift')
|
||||
require(receipts[0]['environment'] == pinned['environment'], 'R09 environment subset pin drift')
|
||||
require(all(r['environment_sha256'] == receipts[0]['environment_sha256'] for r in receipts),
|
||||
'R09 environment hash cross-receipt drift')
|
||||
require(receipts[0]['environment_sha256'] == pinned['environment_sha256'], 'R09 environment hash pin drift')
|
||||
for r in receipts:
|
||||
env = r['environment']
|
||||
require(env['P08_PLACEMENT_ROLE'] == r['role'] == role, 'R09 environment role mismatch')
|
||||
require(env['P08_PLACEMENT_ROOT'] == str(original/'os-pair'), 'R09 environment pair path mismatch')
|
||||
proof = original/'os-runs'/role/'teardown'
|
||||
require(env['THE_TREE_AUDIO_TEARDOWN_PROOF_DIR'] == str(proof/'owned-audio') and
|
||||
env['THE_TREE_AUDIO_FIXTURE_CONTROL_PROOF'] == str(proof/'control.json'),
|
||||
'R09 environment proof path mismatch')
|
||||
for field in ('controller_sha256', 'recorder_sha256', 'engine_sha256', 'command', 'source_map'):
|
||||
require(r[field] == pinned[field], 'R09 receipt '+field+' drift')
|
||||
|
||||
def jpeg_dimensions(data):
|
||||
"""Structural validation only; positive validity requires original capture hashes."""
|
||||
require(data[:2] == b'\xff\xd8' and data[-2:] == b'\xff\xd9', 'invalid JPEG SOI/EOI')
|
||||
@@ -923,7 +962,8 @@ def main(argv=None):
|
||||
return 2
|
||||
deficits = check(args.project_root, Path(build)/'p08-normal-placement-evidence')
|
||||
print(json.dumps({'task_id': 'P08-03', 'integrity': 'fail' if deficits else 'pass',
|
||||
'deficits': deficits, 'acceptance': 'pending'}, ensure_ascii=False))
|
||||
'deficits': deficits, 'acceptance': 'pending',
|
||||
'environment_provenance': ENVIRONMENT_PROVENANCE}, ensure_ascii=False))
|
||||
return 1 if deficits else 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user