144 lines
5.1 KiB
JSON
144 lines
5.1 KiB
JSON
{
|
|
"schema_version": "string_ppi_task1_snapshot_v1",
|
|
"captured_at": "2026-07-21T04:26:31+08:00",
|
|
"mode": "snapshot_deployment_and_validation_only",
|
|
"deployment": {
|
|
"ssh_host": "planai5090",
|
|
"project_root": "/home/xzq/5090/PlantAI-dev4090-7/PlantAI-dev",
|
|
"snapshot_path": "data/string/v12.0",
|
|
"backend_modified": false,
|
|
"ppi_execution_modified": false,
|
|
"service_restarted": false
|
|
},
|
|
"script_audit": {
|
|
"path": "scripts/prepare_string_species_snapshot.py",
|
|
"changed": false,
|
|
"conclusion": "existing implementation satisfies Task 1 requirements",
|
|
"features_verified": [
|
|
"fixed STRING v12.0 HTTPS source URLs",
|
|
"temporary download followed by atomic replacement",
|
|
"strict registry and tree parsing",
|
|
"parent completeness and non-root cycle validation",
|
|
"registry/tree STRING membership equality",
|
|
"required Viridiplantae 33090 and Arabidopsis 3702 checks",
|
|
"file sizes, SHA256, snapshot_id and source manifest"
|
|
]
|
|
},
|
|
"red_baseline": {
|
|
"fixture_tests": {
|
|
"command": "/home/xzq/miniconda3/envs/test4py311/bin/python -m pytest -q tests/unit/test_string_species_snapshot.py",
|
|
"exit_code": 0,
|
|
"result": "9 passed"
|
|
},
|
|
"full_snapshot_test": {
|
|
"command": "/home/xzq/miniconda3/envs/test4py311/bin/python -m pytest -q tests/unit/test_string_species_registry.py::test_full_snapshot_supports_registry_only_species_and_second_non_ft_target",
|
|
"exit_code": 1,
|
|
"result": "failed as expected",
|
|
"failure": "StringSnapshotError: STRING snapshot manifest unavailable: data/string/v12.0/source_manifest.json",
|
|
"failure_classification": "required production snapshot missing; not syntax or fixture error"
|
|
}
|
|
},
|
|
"download": {
|
|
"command": "/home/xzq/miniconda3/envs/test4py311/bin/python scripts/prepare_string_species_snapshot.py --version 12.0 --destination data/string/v12.0",
|
|
"exit_code": 0,
|
|
"transfer_mode": "download",
|
|
"string_version": "12.0",
|
|
"downloaded_at": "2026-07-20T20:24:44.605781+00:00",
|
|
"snapshot_id": "ede47d546d853d0ec30ee75066976a35c08fd2412e6e5fc7866bbd205fc2eeb3",
|
|
"source_urls": {
|
|
"species.v12.0.txt": "https://stringdb-downloads.org/download/species.v12.0.txt",
|
|
"species.tree.v12.0.txt": "https://stringdb-downloads.org/download/species.tree.v12.0.txt"
|
|
},
|
|
"files": {
|
|
"species.v12.0.txt": {
|
|
"size": 1023159,
|
|
"sha256": "4bb4c99c14db8d695decadf3b403a5b87ac490b468a842cbc54ec2e412400fec",
|
|
"actual_matches_manifest": true
|
|
},
|
|
"species.tree.v12.0.txt": {
|
|
"size": 97357335,
|
|
"sha256": "54cf2e3378cbcabc38e355b044336813b7c0e76292ef34d70f8c8debc2e49ee1",
|
|
"actual_matches_manifest": true
|
|
}
|
|
}
|
|
},
|
|
"validation": {
|
|
"test_command": "/home/xzq/miniconda3/envs/test4py311/bin/python -m pytest -q tests/unit/test_string_species_snapshot.py tests/unit/test_string_species_registry.py",
|
|
"test_exit_code": 0,
|
|
"test_result": "19 passed",
|
|
"registry_species_count": 12535,
|
|
"tree_node_count": 2212178,
|
|
"tree_string_species_count": 12535,
|
|
"registry_tree_membership_equal": true,
|
|
"parent_graph_complete": true,
|
|
"non_root_cycle_absent": true,
|
|
"root_taxon_id": "1",
|
|
"required_nodes": {
|
|
"33090": {
|
|
"in_tree": true,
|
|
"parent_taxon_id": "2759"
|
|
},
|
|
"3702": {
|
|
"in_registry": true,
|
|
"in_tree": true,
|
|
"parent_taxon_id": "3701",
|
|
"is_string_species": true
|
|
}
|
|
}
|
|
},
|
|
"setaria_viridis": {
|
|
"scientific_name": "Setaria viridis",
|
|
"taxon_id": "4556",
|
|
"in_tree": true,
|
|
"tree_parent_taxon_id": "4554",
|
|
"in_string_registry": false,
|
|
"is_direct_string_species": false,
|
|
"name_resolution_source": "scientific_name",
|
|
"taxid_resolution_source": "explicit_tree_taxon_id",
|
|
"selection_mode": "tree_nearest",
|
|
"requires_user_confirmation": true,
|
|
"issue_code": "ppi_reference_confirmation_required",
|
|
"candidates": [
|
|
{
|
|
"taxon_id": "4555",
|
|
"name": "Setaria italica",
|
|
"lca_taxon_id": "4554",
|
|
"lca_name": "Setaria",
|
|
"tree_distance": 2
|
|
},
|
|
{
|
|
"taxon_id": "4540",
|
|
"name": "Panicum miliaceum",
|
|
"lca_taxon_id": "147428",
|
|
"lca_name": "Paniceae",
|
|
"tree_distance": 6
|
|
},
|
|
{
|
|
"taxon_id": "888268",
|
|
"name": "Dichanthelium oligosanthes",
|
|
"lca_taxon_id": "147428",
|
|
"lca_name": "Paniceae",
|
|
"tree_distance": 6
|
|
}
|
|
],
|
|
"name_and_taxid_queries_agree": true
|
|
},
|
|
"files_changed": [
|
|
"data/string/v12.0/species.v12.0.txt",
|
|
"data/string/v12.0/species.tree.v12.0.txt",
|
|
"data/string/v12.0/source_manifest.json",
|
|
"docs/validation/2026-07-21-string-ppi-task1-snapshot.json",
|
|
"docs/validation/2026-07-21-string-ppi-task1-snapshot.md"
|
|
],
|
|
"gate_1": {
|
|
"red_missing_snapshot_reproduced": true,
|
|
"preexisting_script_accepted_without_change": true,
|
|
"official_fixed_snapshot_deployed": true,
|
|
"manifest_and_sha256_verified": true,
|
|
"full_snapshot_and_registry_tests_pass": true,
|
|
"setaria_file_fact_recorded": true,
|
|
"scope_respected": true,
|
|
"status": "pass"
|
|
}
|
|
}
|