{"nodes": [{"id": "docs_security_notes", "label": "Security Architecture Notes", "file_type": "document", "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "docs_security_notes_sha256_payload_check", "label": "SHA-256 Binary Integrity Verification", "file_type": "concept", "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Installer verifies embedded archive hash and launcher validates bin/poker.exe hash to prevent payload tampering."}, {"id": "docs_security_notes_save_tamper_signature", "label": "Save File Salted Signature", "file_type": "concept", "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Save files write a hash signature computed over the first 276 bytes with a hardcoded salt to catch manual progress hex editing."}, {"id": "docs_security_notes_path_traversal_guard", "label": "Installer Path Traversal Guard", "file_type": "concept", "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Installer rejects archive entries containing ../ to guarantee unpacked files cannot escape the installation directory."}], "edges": [{"source": "docs_security_notes", "target": "docs_security_notes_sha256_payload_check", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "weight": 1.0}, {"source": "docs_security_notes", "target": "docs_security_notes_save_tamper_signature", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "weight": 1.0}, {"source": "docs_security_notes", "target": "docs_security_notes_path_traversal_guard", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "weight": 1.0}, {"source": "docs_security_notes_save_tamper_signature", "target": "graphify_out_converted_variables_documentation_3fc6d2dc_save_magic", "relation": "shares_data_with", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "weight": 1.0}, {"source": "docs_security_notes_save_tamper_signature", "target": "\u0438\u0434\u0435\u0438_appdata_saves", "relation": "conceptually_related_to", "confidence": "INFERRED", "confidence_score": 0.95, "source_file": "docs/SECURITY_NOTES.txt", "source_location": null, "weight": 1.0}], "hyperedges": [{"id": "he_save_integrity_protection", "label": "Save File Integrity & Persistence Architecture", "nodes": ["docs_security_notes_save_tamper_signature", "graphify_out_converted_variables_documentation_3fc6d2dc_save_magic", "\u0438\u0434\u0435\u0438_appdata_saves"], "relation": "form", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "docs/SECURITY_NOTES.txt"}]}