{ "schema_version": 1, "schema_contract": { "id": "chimera-gfx-phase-0.8-remediation-v1", "shared_schema_available": false, "validator": "tools/validate_phase08_remediation.py", "reason": "Existing artifact and controlled-runtime schemas describe built runtime artifacts and cannot represent an offline blocked evidence contract without misleading artifact semantics." }, "phase_id": "0.8R", "phase": "offline_remediation", "status": "READ_ONLY_PREFLIGHT_BLOCKED", "date": "2026-07-18", "historical_identity": { "source_commit": "2c944d6d65a08f7e1c02f518721cde061b999329", "status": "READ_ONLY_PREFLIGHT_BLOCKED", "historical_validation_report": { "reported_date": "2026-07-18", "host_tests": "17/17 passed", "manifest_and_safety_checks": "passed", "secret_scan": "passed across 558 text files", "classification": "historical_report_not_current_hardware_evidence" } }, "immutable_evidence": [ { "path": "docs/runtime/phase-0.8-read-only-preflight.md", "role": "historical_human_readable_preflight_record", "sha256": "3fbe086175a6048176075f447ec1482074928e3b5282db97ea2169395fe1d508" }, { "path": "manifests/runtime/phase-0.8-read-only-preflight.json", "role": "historical_machine_readable_preflight_record", "sha256": "47d7f452f8799979fe99b3e6d56859f03544112725bf7e5b349eba5ed81b3322" }, { "path": "tests/test_phase08_preflight.py", "role": "historical_fail_closed_regression_test", "sha256": "8a4ad7c70de28ffe3148fd3fd1f68c36a872c53c691c9068e1ff163970863c48" } ], "authorization": { "authorized": false, "installation_authorized": false, "lifecycle_authorized": false, "execution_authorized": false, "transfer_authorized": false, "automatic_retry": false }, "activity": { "hardware_observed": false, "ps5_connected": false, "files_transferred": false, "target_execution_performed": false, "target_mutation_performed": false, "target_artifact_created": false, "collector_implemented": false, "target_build_performed": false }, "firmware_runtime_behavior": "UNPROVEN", "stock_identities": { "classification": "reference_only", "current_device_observed": false, "elfldr": { "size": 397000, "sha256": "092d16ee0ede0c494947efd38d1a17bbd7cc4b022d3858ea898833c188c703e8", "current_device_match": "UNPROVEN" }, "payload_manager": { "size": 2050320, "sha256": "518740adbacccb9094fadb07dd424c53ee290f38306449ccc9d6957fdf813c0b", "current_device_match": "UNPROVEN" } }, "payload_manager_backup": { "classification": "hard_blocker", "on_device_proven": false, "byte_exact_proven": false, "creation_allowed_in_strict_read_only_phase": false, "result": "HARD_STOP-GATE" }, "claim_boundaries": { "hardware_safety_proven": false, "firmware_behavior_proven": false, "absence_of_volatile_effects_proven": false, "no_persistent_write_found_equals_side_effect_free": false, "host_tests_are_hardware_evidence": false, "missing_observation_means_safe_absence": false }, "side_effect_categories": [ { "id": "A", "name": "PERSISTENT_MUTATION", "definition": "File creation/write/delete/rename, configuration or autoload changes, metadata changes, or persistent platform-state changes." }, { "id": "B", "name": "PROCESS_OR_SERVICE_WIDE_MUTATION", "definition": "Global flags, functional counters, autoload state, service state, process signaling, or retry state." }, { "id": "C", "name": "VOLATILE_TECHNICAL_EFFECT", "definition": "Socket acceptance, temporary buffers, allocation, scheduler activity, kernel counters, caches, audit or logging paths, and temporary process-local state." }, { "id": "D", "name": "OBSERVATION", "definition": "Firmware, file metadata, hashes, process/listener state, configuration contents, rollback identities, or storage conditions." } ], "payload_manager_source": { "origin": "itsPLK/ps5-payload-manager", "release": "v0.3.1", "commit": "cfbc70f30f419b09bf2b52283f7409e2d3117ee1", "files": [ { "path": "include/pldmgr.h", "sha256": "01c693a3248dce7a663dd4ed9c73ce5f3a4443b5f2bd210746d94993dee27b91" }, { "path": "src/http_server.c", "sha256": "35cf5d8f0dd44cf64ceab5e4b0ecc09413c82d7e9946ba9de2ca4b1898631fdd" }, { "path": "src/autoload.c", "sha256": "7051cab3ee1a3e0b9f6498000565eb9e160b9c63efa1771f250e98ec3aa4ae67" }, { "path": "src/log_server.c", "sha256": "659095f43df1bbe8eb24acb165f027edc277af1e60aabb26ba9e3920b233d6f1" }, { "path": "src/config.c", "sha256": "2fa05a2781f7e41555653ea0fa2923c21bca7bb24c0062c722e0ae13be757b58" }, { "path": "src/payload_mgr.c", "sha256": "c2a442c2cc26ce85b5c63db12102b22e7ca552761eb1bf0acfd650c24e05e761" }, { "path": "src/sources.c", "sha256": "a7a4a5cafccfba74902d6ed21ba001e6a9f62d4dff840ac38882d04827162c96" }, { "path": "src/process_mgr.c", "sha256": "5b1b1be70878ccc56d13295362b78da7faaf8e3b7c009472be8d65a9db9ad97c" } ] }, "side_effect_findings": [ { "id": "options_any_endpoint", "http_method": "OPTIONS", "endpoint": "*", "handler_function": "http_on_request", "writes_server_active_flag": false, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": false, "categories": [ "C" ], "other_effects": [ "network request acceptance and response handling", "response allocation and transport effects", "cache, audit, scheduler, and kernel-counter effects remain unproven" ], "source_references": [ "src/http_server.c:131-147" ], "strict_read_only_preflight_suitable": false, "reason": "OPTIONS does not produce the required evidence set and the transport's volatile effects are not proven absent." }, { "id": "get_version", "http_method": "GET", "endpoint": "/version", "handler_function": "http_on_request", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": false, "categories": [ "B", "C" ], "other_effects": [ "writes process-global server_active_flag", "network request and response effects remain" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:835-838", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "The informational response still follows a process-wide state mutation." }, { "id": "get_log", "http_method": "GET", "endpoint": "/log", "handler_function": "http_on_request -> log_build_json", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": false, "categories": [ "B", "C", "D" ], "other_effects": [ "locks and reads the in-process log ring", "allocates a response buffer" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:826-834", "src/log_server.c:20-23", "src/log_server.c:111-127" ], "strict_read_only_preflight_suitable": false, "reason": "It mutates process-global state and does not provide the required device evidence." }, { "id": "get_autoload_status", "http_method": "GET", "endpoint": "/autoload_status", "handler_function": "http_on_request -> pldmgr_autoload_get_status -> config_read", "writes_server_active_flag": true, "writes_autoload_triggered": true, "reads_filesystem_or_configuration": true, "categories": [ "B", "C", "D" ], "other_effects": [ "changes the functional autoload frontend-ready flag", "can release the autoload worker from its frontend wait", "reads /data/pldmgr/autoload.txt", "reads /data/pldmgr/pldmgr_config.txt", "atime, audit, cache, and metadata effects remain unproven" ], "source_references": [ "include/pldmgr.h:22,41-42", "src/http_server.c:131-152", "src/http_server.c:847-871", "src/autoload.c:44-48", "src/autoload.c:78-93", "src/config.c:12-49", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "The route is functionally mutating and performs configuration reads with unproven technical side effects." }, { "id": "get_config", "http_method": "GET", "endpoint": "/get_config", "handler_function": "http_on_request -> config_read", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": true, "categories": [ "B", "C", "D" ], "other_effects": [ "reads /data/pldmgr/pldmgr_config.txt", "reads /data/pldmgr/autoload.txt", "atime, audit, cache, and metadata effects remain unproven" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:911-930", "src/config.c:12-49", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "The route mutates process state and filesystem-read side effects are unproven." }, { "id": "get_list_payloads", "http_method": "GET", "endpoint": "/list_payloads", "handler_function": "http_on_request -> payload_mgr_list_json", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": true, "categories": [ "B", "C", "D" ], "other_effects": [ "reads configuration", "scans internal and possible USB directories", "reads sidecar metadata", "filesystem and removable-media observation effects remain unproven" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:601-608", "src/payload_mgr.c:114-153", "src/payload_mgr.c:196-238", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "It mutates process state and performs broad filesystem enumeration without a side-effect contract." }, { "id": "get_processes_list", "http_method": "GET", "endpoint": "/processes_list", "handler_function": "http_on_request -> process_list_json", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": false, "categories": [ "B", "C", "D" ], "other_effects": [ "performs sysctl process enumeration", "allocates and frees a process snapshot", "kernel counters, audit, scheduling, and service effects remain unproven" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:609-616", "src/process_mgr.c:43-88", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "The route mutates process state and its system-query effects are not contractually bounded." }, { "id": "get_sources_list", "http_method": "GET", "endpoint": "/sources_list", "handler_function": "http_on_request -> sources_list_json -> load_sources", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": true, "categories": [ "B", "C", "D" ], "other_effects": [ "reads /data/pldmgr/sources.json", "is not on the noisy-route exclusion list and therefore also calls pldmgr_log", "writes stdout and the process-local log ring" ], "source_references": [ "src/http_server.c:111-126", "src/http_server.c:131-152", "src/http_server.c:479-481", "src/http_server.c:706-713", "src/sources.c:28-84", "src/sources.c:112-134", "src/log_server.c:20-55" ], "strict_read_only_preflight_suitable": false, "reason": "It mutates active/log state and reads configuration without a side-effect guarantee." }, { "id": "get_ip", "http_method": "GET", "endpoint": "/getip", "handler_function": "http_on_request -> pldmgr_get_local_ip", "writes_server_active_flag": true, "writes_autoload_triggered": false, "reads_filesystem_or_configuration": false, "categories": [ "B", "C", "D" ], "other_effects": [ "queries network-interface state", "network, kernel-counter, audit, cache, and scheduler effects remain unproven" ], "source_references": [ "src/http_server.c:131-152", "src/http_server.c:839-846", "src/log_server.c:20-23" ], "strict_read_only_preflight_suitable": false, "reason": "The route mutates process state and cannot establish the required preflight evidence set." } ], "evidence_contract": [ { "id": "firmware", "required_fact": "Two authoritative current observations agree on the exact firmware identifier and revision.", "possible_evidence_source": "Two separately reviewed authoritative device or user-visible sources; exact methods are unset.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "transport, UI, audit, cache, and platform-query effects" ], "required_collector_identity": [ "name", "version", "origin", "source commit", "operation set", "binary size and SHA-256 when code is involved" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "raw values", "timestamps", "source identities", "exact agreement decision" ] }, { "id": "live_paths", "required_fact": "Literal live paths, mount identities, object types, and no symlink traversal for both stock components.", "possible_evidence_source": "A separately reviewed no-follow object metadata operation.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "atime, audit, metadata cache, mount, and namespace effects" ], "required_collector_identity": [ "tool and source identity", "exact no-follow operation", "filesystem and mount options" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "literal paths", "mount IDs", "object types", "symlink decisions" ] }, { "id": "object_identities", "required_fact": "Stable pre/post inode or object IDs, device IDs, owner, group, mode, mtime, and ctime.", "possible_evidence_source": "A side-effect-reviewed metadata collector using the same objects before and after all reads.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "metadata cache, audit, race, and concurrent process effects" ], "required_collector_identity": [ "tool identity", "object lookup semantics", "race and symlink policy" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "complete pre/post metadata", "stability decision", "all raw errors" ] }, { "id": "file_sizes", "required_fact": "Current live byte sizes equal the two reference sizes.", "possible_evidence_source": "The same reviewed object handles used for identity collection.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "metadata cache, audit, and concurrent modification effects" ], "required_collector_identity": [ "tool identity", "same-object binding", "pre/post race controls" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "raw sizes", "reference comparison", "object bindings" ] }, { "id": "sha256", "required_fact": "SHA-256 of the exact current live bytes equals each reference digest.", "possible_evidence_source": "A source-reviewed, no-follow, same-object streaming hash operation.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "atime, audit, page cache, scheduler, thermal, and concurrent modification effects" ], "required_collector_identity": [ "hash implementation and version", "source commit", "binary size and SHA-256", "object-open and race policy" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "bytes read", "start/end time", "digest", "pre/post object identity", "timeout and error state" ] }, { "id": "processes_services", "required_fact": "Every relevant process and service maps to an executable object, parent, start time, status, and startup mechanism.", "possible_evidence_source": "A separately reviewed process/service snapshot mechanism.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "kernel counters, audit, scheduling, locking, cache, and service-query effects" ], "required_collector_identity": [ "tool and API identity", "source commit", "snapshot semantics" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "complete raw snapshot", "executable mappings", "unknown/unmapped entries" ] }, { "id": "listeners", "required_fact": "Ports 8084, 8085, and 9021 have unambiguous owners, addresses, and binding types with no unexpected exposure.", "possible_evidence_source": "A separately reviewed listener snapshot mechanism.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "network-stack counters, audit, cache, locking, and race effects" ], "required_collector_identity": [ "tool and API identity", "source commit", "snapshot and ownership-mapping semantics" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "protocol/address/port rows", "binding types", "process and executable owners", "exposure decision" ] }, { "id": "autoload", "required_fact": "All authoritative autoload, startup, and retry sources prove that lifecycle and hardened artifacts are absent and automatic retry is disabled.", "possible_evidence_source": "A collector distinct from the mutating stock /autoload_status route.", "confidence": "UNPROVEN", "known_mutations": [ "stock /autoload_status writes autoload_triggered and is inadmissible" ], "unknown_effects": [ "atime, audit, cache, metadata, service-state, and race effects" ], "required_collector_identity": [ "tool and source identity", "complete authoritative source list", "no functional-state mutation proof" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "raw safe representations", "source object identities and hashes", "absence decisions", "retry decision" ] }, { "id": "rollback_files", "required_fact": "Separate already-present byte-exact stock backups exist with unambiguous restore mappings.", "possible_evidence_source": "The same admissible object/hash collector used for live files, applied to separate backup objects.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "atime, audit, page cache, metadata, mount, and race effects" ], "required_collector_identity": [ "tool and source identity", "same-object hash binding", "separate-device/object proof" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "paths", "object and mount IDs", "sizes and digests", "separation proof", "restore mappings" ] }, { "id": "storage_precondition", "required_fact": "A separate backup destination has at least 2447320 content bytes plus a separately assessed allocation reserve.", "possible_evidence_source": "A separately reviewed filesystem capacity and mount identity operation.", "confidence": "UNPROVEN", "known_mutations": [], "unknown_effects": [ "mount, audit, cache, allocation accounting, and concurrent-use effects" ], "required_collector_identity": [ "tool and API identity", "mount/device identity semantics", "capacity accounting semantics" ], "timeout_ms": null, "fail_closed_result": "STOP", "reviewer_output": [ "mount and device IDs", "available bytes", "reserve calculation", "separation decision" ] } ], "blockers": [ { "id": "exact_permission_quote_absent", "severity": "STOP-RO" }, { "id": "collector_identity_absent", "severity": "STOP-RO" }, { "id": "collector_side_effect_contract_absent", "severity": "STOP-RO" }, { "id": "two_current_firmware_sources_absent", "severity": "STOP-GATE" }, { "id": "live_object_identities_absent", "severity": "STOP-GATE" }, { "id": "listeners_absent", "severity": "STOP-GATE" }, { "id": "autoload_status_absent", "severity": "STOP-GATE" }, { "id": "rollback_backups_absent", "severity": "STOP-GATE" }, { "id": "payload_manager_backup_not_byte_exact_on_device", "severity": "HARD_STOP-GATE" }, { "id": "unknown_result_is_stop", "severity": "STOP" }, { "id": "timeout_is_stop", "severity": "STOP" }, { "id": "deviation_is_stop", "severity": "STOP" }, { "id": "automatic_retry_forbidden", "severity": "STOP" } ], "prohibited_actions": [ "connect_to_ps5", "probe_ip_port_or_device_interface", "use_usb_or_removable_media", "transfer_ps5_file", "package_for_ps5_deployment", "install_or_replace_target_component", "execute_elf_or_payload", "build_target_elf", "start_cross_compiler", "implement_or_build_collector", "modify_payload_manager_production_code", "modify_elfldr_production_code", "modify_lifecycle_code", "activate_or_modify_autoload", "activate_retry", "change_target_configuration", "start_stop_or_signal_target_service_or_process", "implement_gnm_videoout_sdl_audio_input_shaders_cores_or_retroarch", "download_or_install_packages", "contact_internet_gitea_or_other_remote", "commit_or_push" ], "future_activity": { "mode": "design_only", "bounded_observation_implemented": false, "collector_selected": false, "transfer_method_selected": false, "execution_method_selected": false, "new_explicit_authorization_required": true }, "phase_separation": [ "offline_remediation", "possible_future_bounded_observation_design", "separate_observation_transfer_execution_authorization", "observation_result_review", "separate_mutating_rollback_preparation", "separate_hardened_runtime_installation_authorization", "installation_verification_and_rollback_evidence", "separate_lifecycle_authorization", "non_graphical_capability_probes", "much_later_graphics_backend_and_retroarch" ], "retroarch": { "goal": "long_term_goal", "active_phase": false, "work_started": false, "dependency_chain_only": true } }