Gates: chain validate 1→148
chain_validate/GATES.mdScope: каждая глава 1–148 сверена с накопленным состоянием предыдущих; дефекты с цитатами; пробелы Библии и справочника закрыты или явно отвергнуты; связи наращены.
-
[x] G1: есть 148 ledger-файлов и глава N видит union сущностей глав 1..N-1 CHECK: python3 chain_validate/check_chain.py EXPECT: "ok": true EVIDENCE: "сущностей в итоге": 524 | }
-
[x] G2: defects.json — список; у каждого дефекта есть quote и chapter CHECK: python3 -c "import json; d=json.load(open('chain_validate/defects.json')); print(isinstance(d.get('defects'),list), all(x.get('quote') and x.get('chapter') for x in d['defects']), len(d['defects']))" EXPECT: True True EVIDENCE: True True 3
-
[x] G3: каждый missing-кандидат либо в EntityRegistry, либо в rejected_generic.json CHECK: python3 chain_validate/check_missing_closed.py EXPECT: "ok": true EVIDENCE: "открытых": 0 | }
-
[x] G4: canon-graph валиден CHECK: python3 Скиллы/book-canon-graph/scripts/validate_canon_graph.py EXPECT: "ok": true EVIDENCE: } | }
-
[x] G5: DOCX 144–148 не изменены CHECK: python3 -c "import hashlib,pathlib; m={'Глава 144.docx':'b8d86bdb9f3c05c0f81ec0cadba6403a60b7c87b633fdf257787ec9264c13ba5','Глава 145.docx':'122cd75acf5b8b036f7956e5b676de448c0e8004aab040e791b8f66561131f97','Глава 146.docx':'8ea0b45abbfd834968ae27021f402eb6d409c9be69f1f4a399d786bc7ed2d147','Глава 147.docx':'a9d9f124f39321ec5adf70f9946e18f816ad5a17fbd2f25e73207cdbaeb9ae9f','Глава 148.docx':'17b4e60c2768e6a59d03bbdbf39c50b1b2f6baa4f32f52885dba454aecc89efa'}; root=pathlib.Path('new chapters'); print('OK' if all(hashlib.sha256((root/n).read_bytes()).hexdigest()==h for n,h in m.items()) else 'CHANGED')" EXPECT: OK EVIDENCE: OK
-
[x] G6: chain_validate/REPORT.md содержит измеренные числа цепочки CHECK: python3 -c "from pathlib import Path; t=Path('chain_validate/REPORT.md').read_text(); print('OK' if all(s in t for s in ['ledger','дефект','регистр','глав']) else 'MISSING')" EXPECT: OK EVIDENCE: OK