From ffed0283d0f814428d901e77fec63e3c5cfe6231 Mon Sep 17 00:00:00 2001 From: Digital Drosophila Archive Date: Thu, 1 Oct 2026 16:58:27 +0800 Subject: [PATCH] record-verified-main-consolidation-and-recoverable-branch-cleanup --- .../branch-consolidation-20261001/SHA256SUMS | 13 ++++ .../completion.json | 55 +++++++++++++++ .../remote-cleanup.json | 33 +++++++++ .../source-protection-final.json | 19 +++++ tools/branch-consolidation/seal_receipt.py | 70 +++++++++++++++++++ 5 files changed, 190 insertions(+) create mode 100644 registry/branch-consolidation-20261001/SHA256SUMS create mode 100644 registry/branch-consolidation-20261001/completion.json create mode 100644 registry/branch-consolidation-20261001/remote-cleanup.json create mode 100644 registry/branch-consolidation-20261001/source-protection-final.json create mode 100644 tools/branch-consolidation/seal_receipt.py diff --git a/registry/branch-consolidation-20261001/SHA256SUMS b/registry/branch-consolidation-20261001/SHA256SUMS new file mode 100644 index 0000000..8f93eac --- /dev/null +++ b/registry/branch-consolidation-20261001/SHA256SUMS @@ -0,0 +1,13 @@ +92971baaa32a1698f300938827b8f2067d66604106a60ad6c3331a1ea77b75e5 registry/branch-consolidation-20261001/archive-recovery.json +e4d767d20e338f2128e59d9cb7cc849639d6329ecb946c714e170a883a01e80b registry/branch-consolidation-20261001/completion.json +ea6a4f41e0d3dfff97a628781ed763b1028a9048c5446fb7dff335d2441cc858 registry/branch-consolidation-20261001/merge-audit-final.json +c10e8a1941946480acee7f168f68ea4796d22e987a8225058871b5062ddaba45 registry/branch-consolidation-20261001/merge-audit.json +8d1367b6326e2165fb11564dd25ba90e6b5ee526a914f5f143fc7ac03002a53a registry/branch-consolidation-20261001/plan.json +203a02aa6bec59db3a645d8c639e3d13186e8841048b46f00451b76b6227b20a registry/branch-consolidation-20261001/remote-cleanup.json +4d2ba2306801462539766348d93600f984f324f2b8a9020e90af7bb402aba34e registry/branch-consolidation-20261001/source-protection-final.json +81a33f1c4371e1013fbb5a2d997cb5c6c0c1dc115efb8b2db098a20a9683661f registry/branch-consolidation-20261001/source-protection.json +36f8d0519937ecf42869f364cc4a6a2a7f86443a40dab5800f2bf271f681fc1b tools/branch-consolidation/manage_refs.py +54f17a3cd3636d8a7231ae6180100b4010a19a8ce1d46c175a4e8b692f608c2c tools/branch-consolidation/seal_receipt.py +7e74da3b46d16d29d31d6da05b4b8b74992a2bc35342775267c5a1890880ea2f tools/branch-consolidation/verify_merge.py +b342f80fa91b73a1d5af3672cada52e015bcc8e4c093652270dee504aa10cbd7 docs/30-reproducibility/main-restore.md +993291500e4bf30cefb275bdf7cc1c1ff989e736475977a85449d85306d8dcdf docs/40-operations/branches-20261001.md diff --git a/registry/branch-consolidation-20261001/completion.json b/registry/branch-consolidation-20261001/completion.json new file mode 100644 index 0000000..4896ba3 --- /dev/null +++ b/registry/branch-consolidation-20261001/completion.json @@ -0,0 +1,55 @@ +{ + "all_old_tips_recoverable_and_ancestors_of_main": true, + "archived_tags": 7, + "created_utc": "2026-10-01T08:58:00.393849+00:00", + "final_receipt_publication": "This report is committed after the integration commit; containing Git commit is the receipt publication revision.", + "integration_commit": "9fde10d970474bf4223dec7536c396d3afaccbe3", + "lfs_objects_deleted": false, + "lfs_payloads_reuploaded": false, + "lfs_verification_scope": "Original pointers preserved; authenticated availability checked. Prior fresh-download hash verification receipts remain unchanged.", + "local_branches_preserved": true, + "model_or_science_changes": false, + "remote_branches": 1, + "remote_default": "main", + "removed_remote_branch_refs": 7, + "schema": "branch-consolidation-completion-v1", + "scientific_execution": false, + "source_protection": { + "bytes_checked": 3103901058, + "created_utc": "2026-10-01T08:56:09.890381+00:00", + "file_mismatches": [], + "files_checked": 64034, + "inventory_sha256": "d7b675b0d0d4647d8fe2fcf9616b9a599e5bc3c15565e604e0d66a046afb835a", + "original_experiment_resumed": false, + "original_git_head": "09187e4d4d67badf1b418c5f211258ca5d8fb328", + "original_git_status": "", + "probes_completed_unchanged": 138, + "registered_science_commit": "80aeb2093db655329774eff7b32fb6e417b8b40b", + "registration_sha256": "b63e6281b6505ca3b60acb467dd0b3fae274cf513dcbfd653649ba52e9ba9740", + "scope": "Saved Phase4AR experiment/control files and registered source files; NOT a new Phase1-4AQ numerical regression", + "source_mismatches": [], + "sources_checked": 16, + "status": "PASS", + "training_epochs_cpu_verified_unchanged": 1033, + "wall_seconds": 4.999353606001023 + }, + "source_worktrees": { + "/data/digital-drosophila": { + "branch": "codex/lif-author-semantics-lab", + "head": "09187e4d4d67badf1b418c5f211258ca5d8fb328", + "status": "" + }, + "/home/qishizhe/digital-drosophila-v100-acceleration": { + "branch": "codex/v100-conditioning-acceleration", + "head": "018f038c7857c7e0236dd7408a680458520d92ce", + "status": "" + } + }, + "staged_publication_guard": { + "files": 12690, + "issues": [], + "logical_bytes": 121522918, + "pass": true + }, + "status": "PASS" +} diff --git a/registry/branch-consolidation-20261001/remote-cleanup.json b/registry/branch-consolidation-20261001/remote-cleanup.json new file mode 100644 index 0000000..f12b4dd --- /dev/null +++ b/registry/branch-consolidation-20261001/remote-cleanup.json @@ -0,0 +1,33 @@ +{ + "all_old_tips_ancestors_of_main": true, + "created_utc": "2026-10-01T08:55:25.347213+00:00", + "deleted_remote_branch_refs": { + "refs/heads/codex/apl-pn-scope-audit": "d6843e675dec5ae38a06f2ba70d74836aea53ace", + "refs/heads/codex/lfs-public-resources": "5b1d1b72d7683b5c3dcc1f78b408e1d9dd2832ac", + "refs/heads/codex/lif-author-semantics-lab": "09187e4d4d67badf1b418c5f211258ca5d8fb328", + "refs/heads/codex/lif-semantics-audit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "refs/heads/codex/project-bootstrap": "3981628ff893132a8148668aa94726886dba57a3", + "refs/heads/codex/terminal-scope-diagnostic": "3213aada793740961885ba525494e95f019be6f8", + "refs/heads/codex/v100-conditioning-acceleration": "4436241976887d8cc10088b0d44bc7ed70978fe6" + }, + "lfs_objects_deleted": false, + "local_branches_deleted": false, + "main_commit": "9fde10d970474bf4223dec7536c396d3afaccbe3", + "pass_all": true, + "preserved_archive_tags": { + "archive/2026-10-01/apl-pn-scope-audit": "d6843e675dec5ae38a06f2ba70d74836aea53ace", + "archive/2026-10-01/lfs-public-resources": "5b1d1b72d7683b5c3dcc1f78b408e1d9dd2832ac", + "archive/2026-10-01/lif-author-semantics-lab": "09187e4d4d67badf1b418c5f211258ca5d8fb328", + "archive/2026-10-01/lif-semantics-audit": "5008cd85ca11750f23ce7bc001e8e821763b7501", + "archive/2026-10-01/project-bootstrap": "3981628ff893132a8148668aa94726886dba57a3", + "archive/2026-10-01/terminal-scope-diagnostic": "3213aada793740961885ba525494e95f019be6f8", + "archive/2026-10-01/v100-conditioning-acceleration": "4436241976887d8cc10088b0d44bc7ed70978fe6" + }, + "remaining_remote_heads": { + "main": "9fde10d970474bf4223dec7536c396d3afaccbe3" + }, + "remote": "ssh://git@192.168.10.31:2222/qishizhe/digital-drosophila.git", + "remote_default": "refs/heads/main", + "schema": "branch-consolidation-ref-audit-v1", + "source_worktrees_write_operations": false +} diff --git a/registry/branch-consolidation-20261001/source-protection-final.json b/registry/branch-consolidation-20261001/source-protection-final.json new file mode 100644 index 0000000..b24360d --- /dev/null +++ b/registry/branch-consolidation-20261001/source-protection-final.json @@ -0,0 +1,19 @@ +{ + "status": "PASS", + "created_utc": "2026-10-01T08:56:09.890381+00:00", + "files_checked": 64034, + "bytes_checked": 3103901058, + "inventory_sha256": "d7b675b0d0d4647d8fe2fcf9616b9a599e5bc3c15565e604e0d66a046afb835a", + "registration_sha256": "b63e6281b6505ca3b60acb467dd0b3fae274cf513dcbfd653649ba52e9ba9740", + "registered_science_commit": "80aeb2093db655329774eff7b32fb6e417b8b40b", + "sources_checked": 16, + "file_mismatches": [], + "source_mismatches": [], + "original_git_head": "09187e4d4d67badf1b418c5f211258ca5d8fb328", + "original_git_status": "", + "wall_seconds": 4.999353606001023, + "scope": "Saved Phase4AR experiment/control files and registered source files; NOT a new Phase1-4AQ numerical regression", + "training_epochs_cpu_verified_unchanged": 1033, + "probes_completed_unchanged": 138, + "original_experiment_resumed": false +} \ No newline at end of file diff --git a/tools/branch-consolidation/seal_receipt.py b/tools/branch-consolidation/seal_receipt.py new file mode 100644 index 0000000..63f69dc --- /dev/null +++ b/tools/branch-consolidation/seal_receipt.py @@ -0,0 +1,70 @@ +"""Save final consolidation evidence; no writes outside this integration clone.""" +from datetime import datetime, timezone +import hashlib +import json +from pathlib import Path +import subprocess + +ROOT = Path('/home/qishizhe/digital-drosophila-main-integration-20261001') +AUDIT = ROOT / 'registry/branch-consolidation-20261001' + + +def git(*args, cwd=ROOT): + return subprocess.check_output(['git', *args], cwd=cwd, text=True).strip() + + +def main(): + assert Path.cwd().resolve() == ROOT + assert not (AUDIT / 'completion.json').exists() + plan = json.loads((AUDIT / 'plan.json').read_text()) + cleanup = json.loads((AUDIT / 'remote-cleanup.json').read_text()) + integrity = json.loads((AUDIT / 'source-protection-final.json').read_text()) + assert cleanup['pass_all'] and integrity['status'] == 'PASS' + refs = git('ls-remote', '--symref', 'origin').splitlines() + assert 'ref: refs/heads/main\tHEAD' in refs + heads = [line for line in refs if '\trefs/heads/' in line] + assert heads == [cleanup['main_commit'] + '\trefs/heads/main'] + tag_refs = {line.split('\t')[1]: line.split('\t')[0] for line in refs + if '\trefs/tags/' in line} + assert len(tag_refs) == 14 + for branch, sha in plan['branches'].items(): + tag = plan['archive_tag_prefix'] + branch.removeprefix('codex/') + assert tag_refs['refs/tags/' + tag + '^{}'] == sha + git('merge-base', '--is-ancestor', sha, 'HEAD') + source_trees = {} + expected = { + '/data/digital-drosophila': ('codex/lif-author-semantics-lab', '09187e4d4d67badf1b418c5f211258ca5d8fb328'), + '/home/qishizhe/digital-drosophila-v100-acceleration': ('codex/v100-conditioning-acceleration', '018f038c7857c7e0236dd7408a680458520d92ce'), + } + for path, (branch, sha) in expected.items(): + actual = dict(branch=git('branch', '--show-current', cwd=path), + head=git('rev-parse', 'HEAD', cwd=path), + status=git('status', '--porcelain', cwd=path)) + assert actual == dict(branch=branch, head=sha, status='') + source_trees[path] = actual + guard = json.loads(subprocess.check_output(['python3', '-B', 'tools/repo_guard.py'], text=True)) + assert guard['pass'] + report = dict(schema='branch-consolidation-completion-v1', status='PASS', + created_utc=datetime.now(timezone.utc).isoformat(), integration_commit=cleanup['main_commit'], + remote_default='main', remote_branches=1, archived_tags=7, + removed_remote_branch_refs=7, local_branches_preserved=True, + all_old_tips_recoverable_and_ancestors_of_main=True, source_worktrees=source_trees, + source_protection=integrity, staged_publication_guard=guard, + model_or_science_changes=False, scientific_execution=False, + lfs_objects_deleted=False, lfs_payloads_reuploaded=False, + lfs_verification_scope='Original pointers preserved; authenticated availability checked. Prior fresh-download hash verification receipts remain unchanged.', + final_receipt_publication='This report is committed after the integration commit; containing Git commit is the receipt publication revision.') + with (AUDIT / 'completion.json').open('x') as f: + json.dump(report, f, indent=2, sort_keys=True) + f.write('\n') + files = sorted(p for p in AUDIT.iterdir() if p.is_file()) + files += sorted((ROOT / 'tools/branch-consolidation').glob('*.py')) + files += [ROOT / 'docs/30-reproducibility/main-restore.md', ROOT / 'docs/40-operations/branches-20261001.md'] + with (AUDIT / 'SHA256SUMS').open('x') as f: + for path in files: + f.write(hashlib.sha256(path.read_bytes()).hexdigest() + ' ' + str(path.relative_to(ROOT)) + '\n') + print(json.dumps(report, indent=2)) + + +if __name__ == '__main__': + main()