"""R610:排他落盘开封、不可覆盖首次判定;只使用独立临时目录。""" from hashlib import sha256 import json from pathlib import Path from tempfile import TemporaryDirectory from datetime import datetime, timezone def digest(obj): return sha256(json.dumps(obj, sort_keys=True).encode()).hexdigest() def create_json(path, obj): with path.open('x', encoding='utf-8') as stream: json.dump(obj, stream, sort_keys=True) def evaluate(folder, ident, config, observations, fail=False): frozen = json.loads((folder / 'seal.json').read_text(encoding='utf-8')) if digest(config) != frozen['digest']: raise ValueError('seal changed') # 先保存已开封状态,后续失败不能把这次查看抹去。 create_json(folder / f'{ident}.opened.json', { 'seal': frozen['digest'], 'openedAt': datetime.now(timezone.utc).isoformat() }) if fail: raise RuntimeError('injected execution failure') result = ('information_insufficient' if len(observations) < config['min_trades'] else 'pass' if sum(observations) >= config['min_pnl'] else 'fail') record = {'status': result, 'pnl': sum(observations), 'n': len(observations)} create_json(folder / f'{ident}.result.json', record) return record def main(): candidate = {'code': 'frozen-v1', 'data': 'synthetic-v1', 'lookback': 3, 'min_trades': 2, 'min_pnl': 0} with TemporaryDirectory(prefix='r610-synthetic-') as temp: folder = Path(temp) create_json(folder / 'seal.json', {'config': candidate, 'digest': digest(candidate)}) first = evaluate(folder, 'H1', candidate, [-1, .5]) assert first == {'status': 'fail', 'pnl': -.5, 'n': 2} try: evaluate(folder, 'H1', candidate, [1, 1]) except FileExistsError: pass else: raise AssertionError('same holdout opened twice') changed = dict(candidate, lookback=2) try: evaluate(folder, 'H2', changed, [1, 1]) except ValueError: pass else: raise AssertionError('changed seal accepted') assert evaluate(folder, 'H3', candidate, [1])['status'] == 'information_insufficient' try: evaluate(folder, 'H4', candidate, [], fail=True) except RuntimeError: pass assert (folder / 'H4.opened.json').exists() assert not (folder / 'H4.result.json').exists() try: evaluate(folder, 'H4', candidate, [1, 1]) except FileExistsError: pass else: raise AssertionError('failed opening silently reused') assert json.loads((folder / 'H1.result.json').read_text()) == first print('first=fail pnl=-0.5 repeat=rejected modified_seal=rejected') print('short_sample=information_insufficient failure_receipt=opened_without_result') print('exclusive_files_verified=True first_result_unchanged=True') if __name__ == '__main__': main()