handoff: VSync/event-wedge fixes + iterate 2.A–2.BC research notes
Source changes (dormant parity infra, retained from iterate 2.AI/2.AO): - xenia-kernel/exports.rs: nt_create_event manual_reset polarity + related event wiring - xenia-gpu/mmio_region.rs: D1MODE_VBLANK_VLINE_STATUS hardcode parity Also lands the audit-runs/ analysis notes (.md/.txt/.json digests) for the iterate 2.x VSync/0x10e8/0x1004 wedge investigation. Raw trace dumps (.jsonl/.gz/.csv/.stdout) and agent worktrees (.claude/) are gitignored as regenerable local artifacts — see memory + HANDOFF for the running findings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
25
audit-runs/phase-ab-verify/coexist/ours/config.json
Normal file
25
audit-runs/phase-ab-verify/coexist/ours/config.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"build_id": "ours-phaseB",
|
||||
"cvars": {
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "audit-runs/phase-ab-verify/coexist"
|
||||
},
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
],
|
||||
"engine": "ours",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"image_loaded_sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"iso_path": "",
|
||||
"schema_version": 1,
|
||||
"wall_clock_iso8601": "epoch:0",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_header_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/coexist/ours/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/coexist/ours/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"ctr": "0x0000000000000000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
],
|
||||
"engine": "ours",
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpscr": "0x00000000",
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000700fff00",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x000000007fff0000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"hw_id": 0,
|
||||
"lr": "0x00000000bcbcbcbc",
|
||||
"msr": "0x0000000000009030",
|
||||
"pc": "0x824ab748",
|
||||
"pcr_base": "0x7fff0000",
|
||||
"schema_version": 1,
|
||||
"stack_base": "0x00000000",
|
||||
"stack_limit": "0x00000000",
|
||||
"thread_id": 1,
|
||||
"tls_base": "0x00000000",
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vrsave": "0xffffffff",
|
||||
"vscr": "00000000000000000000000000010000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
}
|
||||
}
|
||||
62
audit-runs/phase-ab-verify/coexist/ours/kernel.json
Normal file
62
audit-runs/phase-ab-verify/coexist/ours/kernel.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
],
|
||||
"engine": "ours",
|
||||
"exports_registered_count": 199,
|
||||
"exports_registered_sample": [
|
||||
"xam.xex!NetDll_WSACleanup",
|
||||
"xam.xex!NetDll_WSAStartup",
|
||||
"xam.xex!XGetAVPack",
|
||||
"xam.xex!XGetGameRegion",
|
||||
"xam.xex!XGetLanguage",
|
||||
"xam.xex!XGetVideoMode",
|
||||
"xam.xex!XMsgInProcessCall",
|
||||
"xam.xex!XMsgStartIORequest",
|
||||
"xam.xex!XMsgStartIORequestEx",
|
||||
"xam.xex!XNotifyGetNext",
|
||||
"xam.xex!XNotifyPositionUI",
|
||||
"xam.xex!XamAlloc",
|
||||
"xam.xex!XamContentClose",
|
||||
"xam.xex!XamContentCreate",
|
||||
"xam.xex!XamContentCreateEnumerator",
|
||||
"xam.xex!XamContentDelete",
|
||||
"xam.xex!XamContentGetCreator",
|
||||
"xam.xex!XamContentGetDeviceData",
|
||||
"xam.xex!XamContentGetDeviceName",
|
||||
"xam.xex!XamContentGetDeviceState",
|
||||
"xam.xex!XamContentSetThumbnail",
|
||||
"xam.xex!XamEnableInactivityProcessing",
|
||||
"xam.xex!XamEnumerate",
|
||||
"xam.xex!XamFree",
|
||||
"xam.xex!XamGetExecutionId",
|
||||
"xam.xex!XamGetSystemVersion",
|
||||
"xam.xex!XamInputGetCapabilities",
|
||||
"xam.xex!XamInputGetKeystrokeEx",
|
||||
"xam.xex!XamInputGetState",
|
||||
"xam.xex!XamInputSetState",
|
||||
"xam.xex!XamLoaderLaunchTitle",
|
||||
"xam.xex!XamLoaderTerminateTitle"
|
||||
],
|
||||
"exports_registered_sha256": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"entry_pc": "0x824ab748",
|
||||
"exit_code": null,
|
||||
"hw_id": 0,
|
||||
"is_entry_thread": true,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "9879c5053fedb1d0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x00001000",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
11
audit-runs/phase-ab-verify/coexist/ours/manifest.json
Normal file
11
audit-runs/phase-ab-verify/coexist/ours/manifest.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"engine": "ours",
|
||||
"files": {
|
||||
"config.json": "246e12c68f05971f3fbc23e52796d9dad669bb1702e4baa10b1bccc9af3e426d",
|
||||
"cpu_state.json": "4e6df54ca1939d08854f3a52b49ed2c5ee0823d63cdecad8a7395203dac5443a",
|
||||
"kernel.json": "b64ea3a6c14f1b0aaadc6de8adbb894edf636a813120d08028ca096e1d06bacc",
|
||||
"memory.json": "8ff1253f790f3f2645e9f47fb50fa7b52073ae2e73fe5ef68ff6d53af59681dd",
|
||||
"vfs.json": "97bb2bda57266d8e0dd1da13309eab5ece43130ef378a0b682917d299e9dc4e1"
|
||||
},
|
||||
"schema_version": 1
|
||||
}
|
||||
84
audit-runs/phase-ab-verify/coexist/ours/memory.json
Normal file
84
audit-runs/phase-ab-verify/coexist/ours/memory.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"committed_pages_total": 2594,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
],
|
||||
"engine": "ours",
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 263
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 2336
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
}
|
||||
],
|
||||
"page_size": 4096,
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 1048576,
|
||||
"end": "0x70100000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"start": "0x70000000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7ffe1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x7ffe0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7fff1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"start": "0x7fff0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"regions_walked": [],
|
||||
"schema_version": 1,
|
||||
"section_contents": null
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/coexist/ours/vfs.json
Normal file
71
audit-runs/phase-ab-verify/coexist/ours/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
],
|
||||
"engine": "ours",
|
||||
"mounted_devices_observed_count": 1,
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
10
audit-runs/phase-ab-verify/digest-current-cvaroff.json
Normal file
10
audit-runs/phase-ab-verify/digest-current-cvaroff.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"instructions": 50000001,
|
||||
"imports": 40454,
|
||||
"unimpl": 0,
|
||||
"draws": 0,
|
||||
"swaps": 1,
|
||||
"unique_render_targets": 0,
|
||||
"shader_blobs_live": 0,
|
||||
"texture_cache_entries": 0
|
||||
}
|
||||
251
audit-runs/phase-ab-verify/re-validation.md
Normal file
251
audit-runs/phase-ab-verify/re-validation.md
Normal file
@@ -0,0 +1,251 @@
|
||||
# Phase A + Phase B re-validation evidence (post-fix)
|
||||
|
||||
Compact transcript of the post-fix re-runs that prove all 4 Phase A
|
||||
gates and all 5 Phase B gates pass. For full discussion of the issues
|
||||
fixed and per-step methodology see `verification-report.md`.
|
||||
|
||||
Conducted 2026-05-13. Build under test: `target/release/xenia-rs`
|
||||
(combined Phase A + Phase B, byte-identical to `xenia-rs-phaseB`).
|
||||
Diff tool under test: `tools/diff-state/diff_state.py` post-fix.
|
||||
|
||||
## Combined Phase A + Phase B cvar-OFF determinism
|
||||
|
||||
```
|
||||
$ ./target/release/xenia-rs check --stable-digest -n 50000000 \
|
||||
--out audit-runs/phase-ab-verify/digest-current-cvaroff.json \
|
||||
"<ISO>"
|
||||
$ diff audit-runs/phase-a-diff-harness/digest-pre-patch.json \
|
||||
audit-runs/phase-ab-verify/digest-current-cvaroff.json
|
||||
# (no output → byte-identical)
|
||||
```
|
||||
|
||||
PASS. The current binary, with no Phase A or Phase B cvars, produces
|
||||
the same `instructions=50000001 imports=40454 unimpl=0 draws=0
|
||||
swaps=1 …` digest as the pre-Phase-A baseline.
|
||||
|
||||
## Phase A gates
|
||||
|
||||
### Gate 1 — cvar-OFF determinism
|
||||
|
||||
- **ours**: see "Combined cvar-OFF" above. PASS.
|
||||
- **canary**: 18-s Wine smoke run with `--mute=true`, no Phase A cvars.
|
||||
`xenia.log` shows `AUDIT-DEMO-SETUP-BEGIN` and
|
||||
`AUDIT-DEMO-SETUP-GRAPHICS-OK`. CONFIG DUMP `[Audit]` section
|
||||
contains `phase_a_event_log_path = ""` and
|
||||
`phase_a_event_log_mem_writes = false`. PASS.
|
||||
|
||||
### Gate 2 — cvar-ON valid JSONL with `schema_version` first
|
||||
|
||||
```
|
||||
$ python3 -c "import json; [json.loads(l) for l in open('audit-runs/phase-a-diff-harness/ours-sanity.jsonl')]"
|
||||
# (no error — 121 363 lines all parse)
|
||||
$ head -1 audit-runs/phase-a-diff-harness/ours-sanity.jsonl
|
||||
{"schema_version":1,"engine":"ours","kind":"schema_version",…}
|
||||
```
|
||||
|
||||
Same for `canary-sanity.jsonl` (1 635 789 lines, all parse, header is
|
||||
`schema_version`). Kind histograms:
|
||||
- ours: 1 schema_version + 40 454 each of import.call/kernel.call/kernel.return
|
||||
- canary: 1 schema_version + 545 271 import.call + 545 270 kernel.call + 545 247 kernel.return (24 in-flight at SIGKILL).
|
||||
|
||||
PASS.
|
||||
|
||||
### Gate 3 — ≥100-event matching prefix on tid=6→tid=1
|
||||
|
||||
```
|
||||
$ python3 tools/diff-events/diff_events.py \
|
||||
--canary audit-runs/phase-a-diff-harness/canary-sanity.jsonl \
|
||||
--ours audit-runs/phase-a-diff-harness/ours-sanity.jsonl \
|
||||
--out /tmp/post-fix-phase-a.md
|
||||
$ diff -q audit-runs/phase-a-diff-harness/diff-report.md /tmp/post-fix-phase-a.md
|
||||
# (no output — byte-identical)
|
||||
```
|
||||
|
||||
113 matched events on canary tid=6 → ours tid=1 before first
|
||||
divergence at idx 113. PASS.
|
||||
|
||||
### Gate 4 — negative test detects corruption at exact index
|
||||
|
||||
```
|
||||
$ python3 -c "
|
||||
import json
|
||||
with open('audit-runs/phase-a-diff-harness/ours-sanity.jsonl') as f:
|
||||
lines=[next(f) for _ in range(100)]
|
||||
open('/tmp/ours-short.jsonl','w').writelines(lines)
|
||||
ev=json.loads(lines[49]); ev['kind']='kernel.CORRUPT'
|
||||
lines[49]=json.dumps(ev)+'\n'
|
||||
open('/tmp/ours-corrupt.jsonl','w').writelines(lines)
|
||||
"
|
||||
$ python3 tools/diff-events/diff_events.py --canary /tmp/ours-short.jsonl --ours /tmp/ours-short.jsonl --validate-identical
|
||||
# exit 0 → self-diff PASS
|
||||
$ python3 tools/diff-events/diff_events.py --canary /tmp/ours-short.jsonl --ours /tmp/ours-corrupt.jsonl --validate-identical
|
||||
validate-identical: divergence in canary_tid=1 at tid_event_idx=48 (kind: canary='import.call' ours='kernel.CORRUPT')
|
||||
# exit 1
|
||||
```
|
||||
|
||||
PASS.
|
||||
|
||||
## Phase B gates
|
||||
|
||||
### Gate 1 — cvar-OFF determinism (combined Phase A + Phase B)
|
||||
|
||||
- **ours**: see "Combined cvar-OFF". PASS.
|
||||
- **canary**: same Wine smoke run shows the 5 expected new
|
||||
`[Audit]` cvar lines (2 Phase A + 3 Phase B). Smoke marker fires.
|
||||
PASS.
|
||||
|
||||
### Gate 2 — well-formed snapshots both engines
|
||||
|
||||
```
|
||||
$ ls audit-runs/phase-b-state-equivalence/snap-001/{canary,ours}/
|
||||
canary/ config.json cpu_state.json kernel.json manifest.json memory.json vfs.json
|
||||
ours/ config.json cpu_state.json kernel.json manifest.json memory.json vfs.json
|
||||
$ for f in config cpu_state kernel manifest memory vfs; do
|
||||
python3 -c "import json; json.load(open('audit-runs/phase-b-state-equivalence/snap-001/canary/$f.json'))"
|
||||
python3 -c "import json; json.load(open('audit-runs/phase-b-state-equivalence/snap-001/ours/$f.json'))"
|
||||
done
|
||||
# (no error — 12 files all parse)
|
||||
```
|
||||
|
||||
Manifest SHA-256 claims match recomputed file hashes (verified per
|
||||
file). Note: ours emits keys alphabetically (`serde_json` default);
|
||||
canary emits in insertion order (`fmt::format`). Diff tool parses
|
||||
to dict before comparing — no functional impact. PASS, with
|
||||
documentation update in `validation.md`.
|
||||
|
||||
### Gate 3 — hash-deterministic re-runs
|
||||
|
||||
**ours.** Two independent runs to different
|
||||
`--phase-b-snapshot-dir`s:
|
||||
|
||||
```
|
||||
$ ./target/release/xenia-rs exec --quiet \
|
||||
--phase-b-snapshot-dir audit-runs/phase-ab-verify/snap-002a \
|
||||
--phase-b-snapshot-and-exit "<ISO>"
|
||||
$ ./target/release/xenia-rs exec --quiet \
|
||||
--phase-b-snapshot-dir audit-runs/phase-ab-verify/snap-002b \
|
||||
--phase-b-snapshot-and-exit "<ISO>"
|
||||
$ python3 tools/diff-state/diff_state.py \
|
||||
--canary audit-runs/phase-ab-verify/snap-002a/ours \
|
||||
--ours audit-runs/phase-ab-verify/snap-002b/ours \
|
||||
--validate-identical
|
||||
validate-identical: OK
|
||||
# exit 0
|
||||
```
|
||||
|
||||
Same-dir byte-equality:
|
||||
|
||||
```
|
||||
$ # snap-002c run 1 → ours/, then mv to ours-1, then run 2 → ours/
|
||||
$ diff -r audit-runs/phase-ab-verify/snap-002c/ours \
|
||||
audit-runs/phase-ab-verify/snap-002c/ours-1
|
||||
# (no output — BYTE-IDENTICAL)
|
||||
```
|
||||
|
||||
PASS.
|
||||
|
||||
**canary.** New snapshot run via Wine, compared to stored snap-001:
|
||||
|
||||
```
|
||||
$ wine xenia_canary_phaseB.exe --mute=true \
|
||||
--phase_b_snapshot_dir="$WP" --phase_b_snapshot_and_exit=true "<ISO>"
|
||||
$ python3 tools/diff-state/diff_state.py \
|
||||
--canary audit-runs/phase-b-state-equivalence/snap-001/canary \
|
||||
--ours audit-runs/phase-ab-verify/snap-canary-002/canary \
|
||||
--validate-identical
|
||||
validate-identical: OK
|
||||
# exit 0
|
||||
```
|
||||
|
||||
PASS.
|
||||
|
||||
### Gate 4 — invariants
|
||||
|
||||
| invariant | canary | ours | ok |
|
||||
|---|---|---|---|
|
||||
| `xex_entry_point` | `0x824ab748` | `0x824ab748` | PASS |
|
||||
| `cpu_state.pc == xex_entry_point` | yes | yes | PASS |
|
||||
| `image_loaded_sha256` match | `a70993b7…` | `ea8d160e…` | **FAIL → STOP (expected catalog finding)** |
|
||||
|
||||
Mismatch reproducible across two independent canary runs (both
|
||||
`a70993b7…`) and two independent ours runs (both `ea8d160e…`). The
|
||||
mismatch is the documented Phase C handoff, not a Phase B failure.
|
||||
|
||||
### Gate 5 — diff-tool negative test
|
||||
|
||||
Reproduction of the verbatim `validation.md` procedure (after
|
||||
diff_state.py fix):
|
||||
|
||||
```
|
||||
$ cp audit-runs/phase-b-state-equivalence/snap-001/ours/kernel.json /tmp/kernel-mut.json
|
||||
$ sed -i 's/"thread_id": 1/"thread_id": 999/' /tmp/kernel-mut.json
|
||||
$ # build /tmp/verify-gate5/ from snap-001/ours + the mutated kernel.json
|
||||
$ python3 tools/diff-state/diff_state.py \
|
||||
--canary audit-runs/phase-b-state-equivalence/snap-001/ours \
|
||||
--ours /tmp/verify-gate5 --out /tmp/r3.md
|
||||
wrote /tmp/r3.md (2 divergences)
|
||||
# exit 1
|
||||
```
|
||||
|
||||
Report.md names two divergences:
|
||||
|
||||
- `kernel.json <manifest>` `manifest-hash-mismatch` σ-structural
|
||||
(file SHA on disk does not match manifest's claim)
|
||||
- `kernel.json objects[handle_semantic_id=9879c5053fedb1d0].details.thread_id`
|
||||
γ-kernel-content `canary=1 ours=999`
|
||||
|
||||
PASS.
|
||||
|
||||
## Regression: stored Phase B catalog unchanged after fix
|
||||
|
||||
```
|
||||
$ python3 tools/diff-state/diff_state.py \
|
||||
--canary audit-runs/phase-b-state-equivalence/snap-001/canary \
|
||||
--ours audit-runs/phase-b-state-equivalence/snap-001/ours \
|
||||
--out /tmp/post-fix-phase-b.md
|
||||
wrote /tmp/post-fix-phase-b.md (58 divergences)
|
||||
# exit 2 (STOP)
|
||||
$ diff -q audit-runs/phase-b-state-equivalence/report.md /tmp/post-fix-phase-b.md
|
||||
# (no output → byte-identical)
|
||||
```
|
||||
|
||||
The 58-divergence catalog is unchanged. The diff_state.py fix
|
||||
behavior is restricted to the case where on-disk SHA disagrees with
|
||||
manifest claim, which only occurs in tampering or cross-engine
|
||||
testing where each engine emits its own bytes.
|
||||
|
||||
## Unit tests
|
||||
|
||||
```
|
||||
$ cargo test -p xenia-kernel event_log
|
||||
test event_log::tests::fnv1a_known_vector ... ok
|
||||
test event_log::tests::semantic_id_stable ... ok
|
||||
test result: ok. 2 passed; 0 failed
|
||||
```
|
||||
|
||||
PASS.
|
||||
|
||||
## Summary
|
||||
|
||||
| Gate | Status |
|
||||
|---|---|
|
||||
| Phase A 1 cvar-OFF (ours) | PASS |
|
||||
| Phase A 1 cvar-OFF (canary) | PASS |
|
||||
| Phase A 2 cvar-ON well-formed JSONL | PASS |
|
||||
| Phase A 3 ≥100-event matching prefix | PASS |
|
||||
| Phase A 4 negative test | PASS |
|
||||
| Phase B 1 cvar-OFF (ours) | PASS |
|
||||
| Phase B 1 cvar-OFF (canary) | PASS |
|
||||
| Phase B 2 well-formed snapshots | PASS |
|
||||
| Phase B 3 hash-deterministic re-runs (ours) | PASS |
|
||||
| Phase B 3 hash-deterministic re-runs (canary) | PASS |
|
||||
| Phase B 4 invariants `pc == entry_point` | PASS |
|
||||
| Phase B 4 invariant `image_loaded_sha256` | FAIL → STOP (documented finding for Phase C) |
|
||||
| Phase B 5 negative test | PASS (post-fix) |
|
||||
| Combined cvar-OFF byte-identical to baseline | PASS |
|
||||
| Diff-tool synthetic edges (each tool, 5 cases) | PASS |
|
||||
| Hook-point semantic equivalence | PASS |
|
||||
|
||||
All gates that should PASS, do. The single FAIL is the documented
|
||||
`image_loaded_sha256` STOP condition that defines Phase B's success
|
||||
boundary.
|
||||
189
audit-runs/phase-ab-verify/regenerated-phase-a-diff-report.md
Normal file
189
audit-runs/phase-ab-verify/regenerated-phase-a-diff-report.md
Normal file
@@ -0,0 +1,189 @@
|
||||
# Phase A diff report
|
||||
|
||||
**This report is the output of Phase A's diff harness. Divergences
|
||||
shown here are INPUT for Phase B (first-divergence localization),
|
||||
not findings of Phase A.** Phase A's job is to make the harness
|
||||
itself correct, not to analyze what it surfaces.
|
||||
|
||||
## Summary
|
||||
|
||||
| canary_tid | ours_tid | matched | canary_total | ours_total | first_divergence_at |
|
||||
|---|---|---|---|---|---|
|
||||
| 4 | 11 | 5 | 25163 | 9 | 5 |
|
||||
| 6 | 1 | 113 | 313196 | 108492 | 113 |
|
||||
| 7 | 2 | 2 | 29 | 33 | 2 |
|
||||
| 12 | 7 | 2 | 2846 | 3 | 2 |
|
||||
| 14 | 9 | 11 | 587000 | 75 | 11 |
|
||||
| 15 | 10 | 15 | 355601 | 15 | — |
|
||||
|
||||
## canary_tid=4 → ours_tid=11
|
||||
|
||||
First divergence at `tid_event_idx=5`: payload.return_value: canary=1 ours=0
|
||||
|
||||
**Pre-context (last 5 matching events):**
|
||||
```
|
||||
canary: [0] import.call RtlEnterCriticalSection
|
||||
ours: [0] import.call RtlEnterCriticalSection
|
||||
canary: [1] kernel.call RtlEnterCriticalSection
|
||||
ours: [1] kernel.call RtlEnterCriticalSection
|
||||
canary: [2] kernel.return RtlEnterCriticalSection
|
||||
ours: [2] kernel.return RtlEnterCriticalSection
|
||||
canary: [3] import.call KeSetEvent
|
||||
ours: [3] import.call KeSetEvent
|
||||
canary: [4] kernel.call KeSetEvent
|
||||
ours: [4] kernel.call KeSetEvent
|
||||
```
|
||||
|
||||
**Divergent event:**
|
||||
```
|
||||
canary: [5] kernel.return KeSetEvent
|
||||
ours: [5] kernel.return KeSetEvent
|
||||
```
|
||||
|
||||
**Next event after the divergence (if any):**
|
||||
```
|
||||
canary: [6] import.call KeWaitForMultipleObjects
|
||||
ours: [6] import.call KeWaitForMultipleObjects
|
||||
```
|
||||
|
||||
**Raw events (JSON):**
|
||||
```json
|
||||
{"deterministic": true, "engine": "canary", "guest_cycle": 0, "host_ns": 1085465900, "kind": "kernel.return", "payload": {"name": "KeSetEvent", "return_value": 1, "side_effects": [], "status": "0x00000001"}, "schema_version": 1, "tid": 4, "tid_event_idx": 5}
|
||||
{"deterministic": true, "engine": "ours", "guest_cycle": 33, "host_ns": 1691667785, "kind": "kernel.return", "payload": {"name": "KeSetEvent", "return_value": 0, "side_effects": [], "status": "0x00000000"}, "schema_version": 1, "tid": 11, "tid_event_idx": 5}
|
||||
```
|
||||
|
||||
## canary_tid=6 → ours_tid=1
|
||||
|
||||
First divergence at `tid_event_idx=113`: payload.return_value: canary=0 ours=1880095840
|
||||
|
||||
**Pre-context (last 5 matching events):**
|
||||
```
|
||||
canary: [108] import.call RtlLeaveCriticalSection
|
||||
ours: [108] import.call RtlLeaveCriticalSection
|
||||
canary: [109] kernel.call RtlLeaveCriticalSection
|
||||
ours: [109] kernel.call RtlLeaveCriticalSection
|
||||
canary: [110] kernel.return RtlLeaveCriticalSection
|
||||
ours: [110] kernel.return RtlLeaveCriticalSection
|
||||
canary: [111] import.call KeQuerySystemTime
|
||||
ours: [111] import.call KeQuerySystemTime
|
||||
canary: [112] kernel.call KeQuerySystemTime
|
||||
ours: [112] kernel.call KeQuerySystemTime
|
||||
```
|
||||
|
||||
**Divergent event:**
|
||||
```
|
||||
canary: [113] kernel.return KeQuerySystemTime
|
||||
ours: [113] kernel.return KeQuerySystemTime
|
||||
```
|
||||
|
||||
**Next event after the divergence (if any):**
|
||||
```
|
||||
canary: [114] import.call RtlInitializeCriticalSection
|
||||
ours: [114] import.call RtlInitializeCriticalSection
|
||||
```
|
||||
|
||||
**Raw events (JSON):**
|
||||
```json
|
||||
{"deterministic": true, "engine": "canary", "guest_cycle": 0, "host_ns": 16129600, "kind": "kernel.return", "payload": {"name": "KeQuerySystemTime", "return_value": 0, "side_effects": [], "status": "0x00000000"}, "schema_version": 1, "tid": 6, "tid_event_idx": 113}
|
||||
{"deterministic": true, "engine": "ours", "guest_cycle": 9415, "host_ns": 72844487, "kind": "kernel.return", "payload": {"name": "KeQuerySystemTime", "return_value": 1880095840, "side_effects": [], "status": "0x700ffc60"}, "schema_version": 1, "tid": 1, "tid_event_idx": 113}
|
||||
```
|
||||
|
||||
## canary_tid=7 → ours_tid=2
|
||||
|
||||
First divergence at `tid_event_idx=2`: payload.return_value: canary=0 ours=1896873464
|
||||
|
||||
**Pre-context (last 5 matching events):**
|
||||
```
|
||||
canary: [0] import.call RtlInitAnsiString
|
||||
ours: [0] import.call RtlInitAnsiString
|
||||
canary: [1] kernel.call RtlInitAnsiString
|
||||
ours: [1] kernel.call RtlInitAnsiString
|
||||
```
|
||||
|
||||
**Divergent event:**
|
||||
```
|
||||
canary: [2] kernel.return RtlInitAnsiString
|
||||
ours: [2] kernel.return RtlInitAnsiString
|
||||
```
|
||||
|
||||
**Next event after the divergence (if any):**
|
||||
```
|
||||
canary: [3] import.call NtCreateFile
|
||||
ours: [3] import.call NtCreateFile
|
||||
```
|
||||
|
||||
**Raw events (JSON):**
|
||||
```json
|
||||
{"deterministic": true, "engine": "canary", "guest_cycle": 0, "host_ns": 726781700, "kind": "kernel.return", "payload": {"name": "RtlInitAnsiString", "return_value": 0, "side_effects": [], "status": "0x00000000"}, "schema_version": 1, "tid": 7, "tid_event_idx": 2}
|
||||
{"deterministic": true, "engine": "ours", "guest_cycle": 2475, "host_ns": 462883889, "kind": "kernel.return", "payload": {"name": "RtlInitAnsiString", "return_value": 1896873464, "side_effects": [], "status": "0x710ffdf8"}, "schema_version": 1, "tid": 2, "tid_event_idx": 2}
|
||||
```
|
||||
|
||||
## canary_tid=12 → ours_tid=7
|
||||
|
||||
First divergence at `tid_event_idx=2`: payload.return_value: canary=258 ours=0
|
||||
|
||||
**Pre-context (last 5 matching events):**
|
||||
```
|
||||
canary: [0] import.call KeWaitForSingleObject
|
||||
ours: [0] import.call KeWaitForSingleObject
|
||||
canary: [1] kernel.call KeWaitForSingleObject
|
||||
ours: [1] kernel.call KeWaitForSingleObject
|
||||
```
|
||||
|
||||
**Divergent event:**
|
||||
```
|
||||
canary: [2] kernel.return KeWaitForSingleObject
|
||||
ours: [2] kernel.return KeWaitForSingleObject
|
||||
```
|
||||
|
||||
**Next event after the divergence (if any):**
|
||||
```
|
||||
canary: [3] import.call RtlEnterCriticalSection
|
||||
ours: <end of stream>
|
||||
```
|
||||
|
||||
**Raw events (JSON):**
|
||||
```json
|
||||
{"deterministic": true, "engine": "canary", "guest_cycle": 0, "host_ns": 913948200, "kind": "kernel.return", "payload": {"name": "KeWaitForSingleObject", "return_value": 258, "side_effects": [], "status": "0x00000102"}, "schema_version": 1, "tid": 12, "tid_event_idx": 2}
|
||||
{"deterministic": true, "engine": "ours", "guest_cycle": 30, "host_ns": 489593928, "kind": "kernel.return", "payload": {"name": "KeWaitForSingleObject", "return_value": 0, "side_effects": [], "status": "0x00000000"}, "schema_version": 1, "tid": 7, "tid_event_idx": 2}
|
||||
```
|
||||
|
||||
## canary_tid=14 → ours_tid=9
|
||||
|
||||
First divergence at `tid_event_idx=11`: payload.return_value: canary=2 ours=0
|
||||
|
||||
**Pre-context (last 5 matching events):**
|
||||
```
|
||||
canary: [6] import.call KeAcquireSpinLockAtRaisedIrql
|
||||
ours: [6] import.call KeAcquireSpinLockAtRaisedIrql
|
||||
canary: [7] kernel.call KeAcquireSpinLockAtRaisedIrql
|
||||
ours: [7] kernel.call KeAcquireSpinLockAtRaisedIrql
|
||||
canary: [8] kernel.return KeAcquireSpinLockAtRaisedIrql
|
||||
ours: [8] kernel.return KeAcquireSpinLockAtRaisedIrql
|
||||
canary: [9] import.call KeRaiseIrqlToDpcLevel
|
||||
ours: [9] import.call KeRaiseIrqlToDpcLevel
|
||||
canary: [10] kernel.call KeRaiseIrqlToDpcLevel
|
||||
ours: [10] kernel.call KeRaiseIrqlToDpcLevel
|
||||
```
|
||||
|
||||
**Divergent event:**
|
||||
```
|
||||
canary: [11] kernel.return KeRaiseIrqlToDpcLevel
|
||||
ours: [11] kernel.return KeRaiseIrqlToDpcLevel
|
||||
```
|
||||
|
||||
**Next event after the divergence (if any):**
|
||||
```
|
||||
canary: [12] import.call KeRaiseIrqlToDpcLevel
|
||||
ours: [12] import.call KeRaiseIrqlToDpcLevel
|
||||
```
|
||||
|
||||
**Raw events (JSON):**
|
||||
```json
|
||||
{"deterministic": true, "engine": "canary", "guest_cycle": 0, "host_ns": 1086679400, "kind": "kernel.return", "payload": {"name": "KeRaiseIrqlToDpcLevel", "return_value": 2, "side_effects": [], "status": "0x00000002"}, "schema_version": 1, "tid": 14, "tid_event_idx": 11}
|
||||
{"deterministic": true, "engine": "ours", "guest_cycle": 77, "host_ns": 1691712626, "kind": "kernel.return", "payload": {"name": "KeRaiseIrqlToDpcLevel", "return_value": 0, "side_effects": [], "status": "0x00000000"}, "schema_version": 1, "tid": 9, "tid_event_idx": 11}
|
||||
```
|
||||
|
||||
## canary_tid=15 → ours_tid=10
|
||||
|
||||
No divergence within the 15 compared events (canary has 355601, ours has 15).
|
||||
@@ -0,0 +1,497 @@
|
||||
{
|
||||
"divergences": [
|
||||
{
|
||||
"canary": "0x00000000701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000700fff00",
|
||||
"path": "gpr[1]"
|
||||
},
|
||||
{
|
||||
"canary": "0x0000000030028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x000000007fff0000",
|
||||
"path": "gpr[13]"
|
||||
},
|
||||
{
|
||||
"canary": "0x0000000000000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000bcbcbcbc",
|
||||
"path": "lr"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff0000",
|
||||
"path": "pcr_base"
|
||||
},
|
||||
{
|
||||
"canary": "0x701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "stack_base"
|
||||
},
|
||||
{
|
||||
"canary": "0x70150000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "stack_limit"
|
||||
},
|
||||
{
|
||||
"canary": 6,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": 1,
|
||||
"path": "thread_id"
|
||||
},
|
||||
{
|
||||
"canary": "0x30027000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "tls_base"
|
||||
},
|
||||
{
|
||||
"canary": "00000000000000000000000000000100",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "00000000000000000000000000010000",
|
||||
"path": "vscr"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "extra-field",
|
||||
"ours": [],
|
||||
"path": "regions_walked"
|
||||
},
|
||||
{
|
||||
"canary": 2466,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 2594,
|
||||
"path": "committed_pages_total"
|
||||
},
|
||||
{
|
||||
"canary": 261991,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x00000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 153,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 0,
|
||||
"path": "heaps[base=0x00000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "heaps[base=0x40000000].page_size"
|
||||
},
|
||||
{
|
||||
"canary": 16098,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x40000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 30,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 263,
|
||||
"path": "heaps[base=0x40000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x3f000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x40000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "heaps[base=0x80000000].page_size"
|
||||
},
|
||||
{
|
||||
"canary": 3950,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x80000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 146,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 2336,
|
||||
"path": "heaps[base=0x80000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x10000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x80000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x90000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "extra-field",
|
||||
"ours": 0,
|
||||
"path": "heaps[base=0x90000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x10000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x90000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 4096,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 1048576,
|
||||
"path": "regions[0].byte_count"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x70100000",
|
||||
"path": "regions[0].end"
|
||||
},
|
||||
{
|
||||
"canary": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"path": "regions[0].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x30027000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x70000000",
|
||||
"path": "regions[0].start"
|
||||
},
|
||||
{
|
||||
"canary": "0x30029000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7ffe1000",
|
||||
"path": "regions[1].end"
|
||||
},
|
||||
{
|
||||
"canary": "2390751521f95a4c513da387bc2ee8a82c5b9261bfc565be5e108fafbda61cf3",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"path": "regions[1].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7ffe0000",
|
||||
"path": "regions[1].start"
|
||||
},
|
||||
{
|
||||
"canary": 524288,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "regions[2].byte_count"
|
||||
},
|
||||
{
|
||||
"canary": "0x701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff1000",
|
||||
"path": "regions[2].end"
|
||||
},
|
||||
{
|
||||
"canary": "07854d2fef297a06ba81685e660c332de36d5d18d546927d30daad6d7fda1541",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"path": "regions[2].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x70150000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff0000",
|
||||
"path": "regions[2].start"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"path": "regions[3].sha256"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "sigma-structural",
|
||||
"file": "kernel.json",
|
||||
"kind": "seq-length",
|
||||
"ours": 32,
|
||||
"path": "exports_registered_sample"
|
||||
},
|
||||
{
|
||||
"canary": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"class": "delta-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "value",
|
||||
"ours": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"path": "exports_registered_sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0d6236cd0677766b",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0d6236cd0677766b]"
|
||||
},
|
||||
{
|
||||
"canary": "0d8cd68a54c991e3",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0d8cd68a54c991e3]"
|
||||
},
|
||||
{
|
||||
"canary": "0db6fd47a31adfc0",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0db6fd47a31adfc0]"
|
||||
},
|
||||
{
|
||||
"canary": "0e8c94fa2ab636b3",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0e8c94fa2ab636b3]"
|
||||
},
|
||||
{
|
||||
"canary": "20b2d85926bc7b11",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20b2d85926bc7b11]"
|
||||
},
|
||||
{
|
||||
"canary": "20b37f5926bd96d6",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20b37f5926bd96d6]"
|
||||
},
|
||||
{
|
||||
"canary": "20de1f16750fb24e",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20de1f16750fb24e]"
|
||||
},
|
||||
{
|
||||
"canary": "89cc99291d29ed5c",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=89cc99291d29ed5c]"
|
||||
},
|
||||
{
|
||||
"canary": "8d4ce6ee5f4e68af",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=8d4ce6ee5f4e68af]"
|
||||
},
|
||||
{
|
||||
"canary": "8d7786abada08427",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=8d7786abada08427]"
|
||||
},
|
||||
{
|
||||
"canary": "a0c8cf37cde6a492",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=a0c8cf37cde6a492]"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "extra-in-ours",
|
||||
"ours": "9879c5053fedb1d0",
|
||||
"path": "objects[handle_semantic_id=9879c5053fedb1d0]"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[0].size"
|
||||
},
|
||||
{
|
||||
"canary": true,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[2].is_directory"
|
||||
},
|
||||
{
|
||||
"canary": true,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "value",
|
||||
"ours": false,
|
||||
"path": "resolve_path_probes[2].resolved"
|
||||
},
|
||||
{
|
||||
"canary": 4096,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[2].size"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[6].size"
|
||||
},
|
||||
{
|
||||
"canary": "",
|
||||
"class": "sigma-structural",
|
||||
"file": "config.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "cvars.phase_a_event_log_path"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"class": "delta-content-STOP",
|
||||
"file": "config.json",
|
||||
"kind": "value",
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"path": "image_loaded_sha256"
|
||||
},
|
||||
{
|
||||
"canary": "ccf935d24a74e002",
|
||||
"class": "delta-content",
|
||||
"file": "config.json",
|
||||
"kind": "value",
|
||||
"ours": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": "xex_header_sha256"
|
||||
}
|
||||
],
|
||||
"file_status": {
|
||||
"config.json": "diverged",
|
||||
"cpu_state.json": "diverged",
|
||||
"kernel.json": "diverged",
|
||||
"memory.json": "diverged",
|
||||
"vfs.json": "diverged"
|
||||
},
|
||||
"invariants": [
|
||||
{
|
||||
"canary": "0x824ab748",
|
||||
"name": "xex_entry_point",
|
||||
"ok": true,
|
||||
"ours": "0x824ab748"
|
||||
},
|
||||
{
|
||||
"canary": "0x824ab748 == 0x824ab748",
|
||||
"name": "cpu_state.pc == xex_entry_point",
|
||||
"ok": true,
|
||||
"ours": "0x824ab748 == 0x824ab748"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"name": "image_loaded_sha256",
|
||||
"ok": false,
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18"
|
||||
}
|
||||
],
|
||||
"schema_version": 1,
|
||||
"stop": true
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
# Phase B snapshot diff
|
||||
|
||||
- canary snapshot: `audit-runs/phase-b-state-equivalence/snap-001/canary`
|
||||
- ours snapshot: `audit-runs/phase-b-state-equivalence/snap-001/ours`
|
||||
|
||||
## Invariants (HARD GATE)
|
||||
|
||||
| invariant | canary | ours | ok? |
|
||||
|---|---|---|---|
|
||||
| xex_entry_point | `0x824ab748` | `0x824ab748` | PASS |
|
||||
| cpu_state.pc == xex_entry_point | `0x824ab748 == 0x824ab748` | `0x824ab748 == 0x824ab748` | PASS |
|
||||
| image_loaded_sha256 | `a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c` | `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` | FAIL |
|
||||
|
||||
> **STOP**: a primary equivalence invariant failed. Downstream divergences are not interpretable until this is resolved. Re-run with `--phase-b-dump-section-content` on both engines and binary-diff the regions to localize.
|
||||
|
||||
## File-level summary
|
||||
|
||||
| file | status | divergence count by class |
|
||||
|---|---|---|
|
||||
| cpu_state.json | diverged | gamma-kernel-content=9 |
|
||||
| memory.json | diverged | sigma-structural=6 delta-content=4 gamma-kernel-content=17 |
|
||||
| kernel.json | diverged | sigma-structural=1 delta-content=1 gamma-kernel-content=12 |
|
||||
| vfs.json | diverged | gamma-kernel-content=5 |
|
||||
| config.json | diverged | sigma-structural=1 delta-content-STOP=1 delta-content=1 |
|
||||
|
||||
## σ-structural divergences (priority 1)
|
||||
|
||||
- **memory.json** `regions_walked`: kind=`extra-field` canary=`None` ours=`[]`
|
||||
- **memory.json** `heaps[base=0x00000000].page_state_histogram.free`: kind=`missing-field` canary=`261991` ours=`None`
|
||||
- **memory.json** `heaps[base=0x40000000].page_state_histogram.free`: kind=`missing-field` canary=`16098` ours=`None`
|
||||
- **memory.json** `heaps[base=0x80000000].page_state_histogram.free`: kind=`missing-field` canary=`3950` ours=`None`
|
||||
- **memory.json** `heaps[base=0x90000000].page_state_histogram.free`: kind=`missing-field` canary=`65536` ours=`None`
|
||||
- **memory.json** `heaps[base=0x90000000].page_state_histogram.committed`: kind=`extra-field` canary=`None` ours=`0`
|
||||
- **kernel.json** `exports_registered_sample`: kind=`seq-length` canary=`0` ours=`32`
|
||||
- **config.json** `cvars.phase_a_event_log_path`: kind=`missing-field` canary=`''` ours=`None`
|
||||
|
||||
## δ-content STOP divergences
|
||||
|
||||
- **config.json** `image_loaded_sha256`: kind=`value` canary=`'a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c'` ours=`'ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18'`
|
||||
|
||||
## δ-content divergences (priority 2)
|
||||
|
||||
- **memory.json** `regions[0].sha256`: kind=`value` canary=`'ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7'` ours=`'30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58'`
|
||||
- **memory.json** `regions[1].sha256`: kind=`value` canary=`'2390751521f95a4c513da387bc2ee8a82c5b9261bfc565be5e108fafbda61cf3'` ours=`'ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7'`
|
||||
- **memory.json** `regions[2].sha256`: kind=`value` canary=`'07854d2fef297a06ba81685e660c332de36d5d18d546927d30daad6d7fda1541'` ours=`'e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a'`
|
||||
- **memory.json** `regions[3].sha256`: kind=`value` canary=`'a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c'` ours=`'ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18'`
|
||||
- **kernel.json** `exports_registered_sha256`: kind=`value` canary=`'0000000000000000000000000000000000000000000000000000000000000000'` ours=`'bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09'`
|
||||
- **config.json** `xex_header_sha256`: kind=`value` canary=`'ccf935d24a74e002'` ours=`'0000000000000000000000000000000000000000000000000000000000000000'`
|
||||
|
||||
## γ-kernel-content divergences (priority 2)
|
||||
|
||||
- **cpu_state.json** `gpr[1]`: kind=`value` canary=`'0x00000000701d0000'` ours=`'0x00000000700fff00'`
|
||||
- **cpu_state.json** `gpr[13]`: kind=`value` canary=`'0x0000000030028000'` ours=`'0x000000007fff0000'`
|
||||
- **cpu_state.json** `lr`: kind=`value` canary=`'0x0000000000000000'` ours=`'0x00000000bcbcbcbc'`
|
||||
- **cpu_state.json** `pcr_base`: kind=`value` canary=`'0x30028000'` ours=`'0x7fff0000'`
|
||||
- **cpu_state.json** `stack_base`: kind=`value` canary=`'0x701d0000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `stack_limit`: kind=`value` canary=`'0x70150000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `thread_id`: kind=`value` canary=`6` ours=`1`
|
||||
- **cpu_state.json** `tls_base`: kind=`value` canary=`'0x30027000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `vscr`: kind=`value` canary=`'00000000000000000000000000000100'` ours=`'00000000000000000000000000010000'`
|
||||
- **memory.json** `committed_pages_total`: kind=`value` canary=`2466` ours=`2594`
|
||||
- **memory.json** `heaps[base=0x00000000].page_state_histogram.committed`: kind=`value` canary=`153` ours=`0`
|
||||
- **memory.json** `heaps[base=0x40000000].page_size`: kind=`value` canary=`65536` ours=`4096`
|
||||
- **memory.json** `heaps[base=0x40000000].page_state_histogram.committed`: kind=`value` canary=`30` ours=`263`
|
||||
- **memory.json** `heaps[base=0x40000000].size`: kind=`value` canary=`'0x3f000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `heaps[base=0x80000000].page_size`: kind=`value` canary=`65536` ours=`4096`
|
||||
- **memory.json** `heaps[base=0x80000000].page_state_histogram.committed`: kind=`value` canary=`146` ours=`2336`
|
||||
- **memory.json** `heaps[base=0x80000000].size`: kind=`value` canary=`'0x10000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `heaps[base=0x90000000].size`: kind=`value` canary=`'0x10000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `regions[0].byte_count`: kind=`value` canary=`4096` ours=`1048576`
|
||||
- **memory.json** `regions[0].end`: kind=`value` canary=`'0x30028000'` ours=`'0x70100000'`
|
||||
- **memory.json** `regions[0].start`: kind=`value` canary=`'0x30027000'` ours=`'0x70000000'`
|
||||
- **memory.json** `regions[1].end`: kind=`value` canary=`'0x30029000'` ours=`'0x7ffe1000'`
|
||||
- **memory.json** `regions[1].start`: kind=`value` canary=`'0x30028000'` ours=`'0x7ffe0000'`
|
||||
- **memory.json** `regions[2].byte_count`: kind=`value` canary=`524288` ours=`4096`
|
||||
- **memory.json** `regions[2].end`: kind=`value` canary=`'0x701d0000'` ours=`'0x7fff1000'`
|
||||
- **memory.json** `regions[2].start`: kind=`value` canary=`'0x70150000'` ours=`'0x7fff0000'`
|
||||
- **kernel.json** `objects[handle_semantic_id=0d6236cd0677766b]`: kind=`missing-from-ours` canary=`'0d6236cd0677766b'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0d8cd68a54c991e3]`: kind=`missing-from-ours` canary=`'0d8cd68a54c991e3'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0db6fd47a31adfc0]`: kind=`missing-from-ours` canary=`'0db6fd47a31adfc0'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0e8c94fa2ab636b3]`: kind=`missing-from-ours` canary=`'0e8c94fa2ab636b3'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20b2d85926bc7b11]`: kind=`missing-from-ours` canary=`'20b2d85926bc7b11'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20b37f5926bd96d6]`: kind=`missing-from-ours` canary=`'20b37f5926bd96d6'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20de1f16750fb24e]`: kind=`missing-from-ours` canary=`'20de1f16750fb24e'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=89cc99291d29ed5c]`: kind=`missing-from-ours` canary=`'89cc99291d29ed5c'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=8d4ce6ee5f4e68af]`: kind=`missing-from-ours` canary=`'8d4ce6ee5f4e68af'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=8d7786abada08427]`: kind=`missing-from-ours` canary=`'8d7786abada08427'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=a0c8cf37cde6a492]`: kind=`missing-from-ours` canary=`'a0c8cf37cde6a492'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=9879c5053fedb1d0]`: kind=`extra-in-ours` canary=`None` ours=`'9879c5053fedb1d0'`
|
||||
- **vfs.json** `resolve_path_probes[0].size`: kind=`type-mismatch` canary=`0` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[2].is_directory`: kind=`type-mismatch` canary=`True` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[2].resolved`: kind=`value` canary=`True` ours=`False`
|
||||
- **vfs.json** `resolve_path_probes[2].size`: kind=`type-mismatch` canary=`4096` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[6].size`: kind=`type-mismatch` canary=`0` ours=`None`
|
||||
|
||||
## Phase C handoff
|
||||
|
||||
Suggested attack order: σ first (structural), then γ ranked by object type (Thread > Event > Semaphore > Mutex > Timer > File > Other), then δ. ε and τ are catalog-only.
|
||||
497
audit-runs/phase-ab-verify/regenerated-phase-b-report.json
Normal file
497
audit-runs/phase-ab-verify/regenerated-phase-b-report.json
Normal file
@@ -0,0 +1,497 @@
|
||||
{
|
||||
"divergences": [
|
||||
{
|
||||
"canary": "0x00000000701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000700fff00",
|
||||
"path": "gpr[1]"
|
||||
},
|
||||
{
|
||||
"canary": "0x0000000030028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x000000007fff0000",
|
||||
"path": "gpr[13]"
|
||||
},
|
||||
{
|
||||
"canary": "0x0000000000000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000bcbcbcbc",
|
||||
"path": "lr"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff0000",
|
||||
"path": "pcr_base"
|
||||
},
|
||||
{
|
||||
"canary": "0x701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "stack_base"
|
||||
},
|
||||
{
|
||||
"canary": "0x70150000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "stack_limit"
|
||||
},
|
||||
{
|
||||
"canary": 6,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": 1,
|
||||
"path": "thread_id"
|
||||
},
|
||||
{
|
||||
"canary": "0x30027000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "0x00000000",
|
||||
"path": "tls_base"
|
||||
},
|
||||
{
|
||||
"canary": "00000000000000000000000000000100",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "cpu_state.json",
|
||||
"kind": "value",
|
||||
"ours": "00000000000000000000000000010000",
|
||||
"path": "vscr"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "extra-field",
|
||||
"ours": [],
|
||||
"path": "regions_walked"
|
||||
},
|
||||
{
|
||||
"canary": 2466,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 2594,
|
||||
"path": "committed_pages_total"
|
||||
},
|
||||
{
|
||||
"canary": 261991,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x00000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 153,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 0,
|
||||
"path": "heaps[base=0x00000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "heaps[base=0x40000000].page_size"
|
||||
},
|
||||
{
|
||||
"canary": 16098,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x40000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 30,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 263,
|
||||
"path": "heaps[base=0x40000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x3f000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x40000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "heaps[base=0x80000000].page_size"
|
||||
},
|
||||
{
|
||||
"canary": 3950,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x80000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": 146,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 2336,
|
||||
"path": "heaps[base=0x80000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x10000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x80000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 65536,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "heaps[base=0x90000000].page_state_histogram.free"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "sigma-structural",
|
||||
"file": "memory.json",
|
||||
"kind": "extra-field",
|
||||
"ours": 0,
|
||||
"path": "heaps[base=0x90000000].page_state_histogram.committed"
|
||||
},
|
||||
{
|
||||
"canary": "0x10000000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x40000000",
|
||||
"path": "heaps[base=0x90000000].size"
|
||||
},
|
||||
{
|
||||
"canary": 4096,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 1048576,
|
||||
"path": "regions[0].byte_count"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x70100000",
|
||||
"path": "regions[0].end"
|
||||
},
|
||||
{
|
||||
"canary": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"path": "regions[0].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x30027000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x70000000",
|
||||
"path": "regions[0].start"
|
||||
},
|
||||
{
|
||||
"canary": "0x30029000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7ffe1000",
|
||||
"path": "regions[1].end"
|
||||
},
|
||||
{
|
||||
"canary": "2390751521f95a4c513da387bc2ee8a82c5b9261bfc565be5e108fafbda61cf3",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"path": "regions[1].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x30028000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7ffe0000",
|
||||
"path": "regions[1].start"
|
||||
},
|
||||
{
|
||||
"canary": 524288,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": 4096,
|
||||
"path": "regions[2].byte_count"
|
||||
},
|
||||
{
|
||||
"canary": "0x701d0000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff1000",
|
||||
"path": "regions[2].end"
|
||||
},
|
||||
{
|
||||
"canary": "07854d2fef297a06ba81685e660c332de36d5d18d546927d30daad6d7fda1541",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"path": "regions[2].sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0x70150000",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "0x7fff0000",
|
||||
"path": "regions[2].start"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"class": "delta-content",
|
||||
"file": "memory.json",
|
||||
"kind": "value",
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"path": "regions[3].sha256"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "sigma-structural",
|
||||
"file": "kernel.json",
|
||||
"kind": "seq-length",
|
||||
"ours": 32,
|
||||
"path": "exports_registered_sample"
|
||||
},
|
||||
{
|
||||
"canary": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"class": "delta-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "value",
|
||||
"ours": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"path": "exports_registered_sha256"
|
||||
},
|
||||
{
|
||||
"canary": "0d6236cd0677766b",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0d6236cd0677766b]"
|
||||
},
|
||||
{
|
||||
"canary": "0d8cd68a54c991e3",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0d8cd68a54c991e3]"
|
||||
},
|
||||
{
|
||||
"canary": "0db6fd47a31adfc0",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0db6fd47a31adfc0]"
|
||||
},
|
||||
{
|
||||
"canary": "0e8c94fa2ab636b3",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=0e8c94fa2ab636b3]"
|
||||
},
|
||||
{
|
||||
"canary": "20b2d85926bc7b11",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20b2d85926bc7b11]"
|
||||
},
|
||||
{
|
||||
"canary": "20b37f5926bd96d6",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20b37f5926bd96d6]"
|
||||
},
|
||||
{
|
||||
"canary": "20de1f16750fb24e",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=20de1f16750fb24e]"
|
||||
},
|
||||
{
|
||||
"canary": "89cc99291d29ed5c",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=89cc99291d29ed5c]"
|
||||
},
|
||||
{
|
||||
"canary": "8d4ce6ee5f4e68af",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=8d4ce6ee5f4e68af]"
|
||||
},
|
||||
{
|
||||
"canary": "8d7786abada08427",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=8d7786abada08427]"
|
||||
},
|
||||
{
|
||||
"canary": "a0c8cf37cde6a492",
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "missing-from-ours",
|
||||
"ours": null,
|
||||
"path": "objects[handle_semantic_id=a0c8cf37cde6a492]"
|
||||
},
|
||||
{
|
||||
"canary": null,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "kernel.json",
|
||||
"kind": "extra-in-ours",
|
||||
"ours": "9879c5053fedb1d0",
|
||||
"path": "objects[handle_semantic_id=9879c5053fedb1d0]"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[0].size"
|
||||
},
|
||||
{
|
||||
"canary": true,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[2].is_directory"
|
||||
},
|
||||
{
|
||||
"canary": true,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "value",
|
||||
"ours": false,
|
||||
"path": "resolve_path_probes[2].resolved"
|
||||
},
|
||||
{
|
||||
"canary": 4096,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[2].size"
|
||||
},
|
||||
{
|
||||
"canary": 0,
|
||||
"class": "gamma-kernel-content",
|
||||
"file": "vfs.json",
|
||||
"kind": "type-mismatch",
|
||||
"ours": null,
|
||||
"path": "resolve_path_probes[6].size"
|
||||
},
|
||||
{
|
||||
"canary": "",
|
||||
"class": "sigma-structural",
|
||||
"file": "config.json",
|
||||
"kind": "missing-field",
|
||||
"ours": null,
|
||||
"path": "cvars.phase_a_event_log_path"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"class": "delta-content-STOP",
|
||||
"file": "config.json",
|
||||
"kind": "value",
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"path": "image_loaded_sha256"
|
||||
},
|
||||
{
|
||||
"canary": "ccf935d24a74e002",
|
||||
"class": "delta-content",
|
||||
"file": "config.json",
|
||||
"kind": "value",
|
||||
"ours": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"path": "xex_header_sha256"
|
||||
}
|
||||
],
|
||||
"file_status": {
|
||||
"config.json": "diverged",
|
||||
"cpu_state.json": "diverged",
|
||||
"kernel.json": "diverged",
|
||||
"memory.json": "diverged",
|
||||
"vfs.json": "diverged"
|
||||
},
|
||||
"invariants": [
|
||||
{
|
||||
"canary": "0x824ab748",
|
||||
"name": "xex_entry_point",
|
||||
"ok": true,
|
||||
"ours": "0x824ab748"
|
||||
},
|
||||
{
|
||||
"canary": "0x824ab748 == 0x824ab748",
|
||||
"name": "cpu_state.pc == xex_entry_point",
|
||||
"ok": true,
|
||||
"ours": "0x824ab748 == 0x824ab748"
|
||||
},
|
||||
{
|
||||
"canary": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"name": "image_loaded_sha256",
|
||||
"ok": false,
|
||||
"ours": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18"
|
||||
}
|
||||
],
|
||||
"schema_version": 1,
|
||||
"stop": true
|
||||
}
|
||||
98
audit-runs/phase-ab-verify/regenerated-phase-b-report.md
Normal file
98
audit-runs/phase-ab-verify/regenerated-phase-b-report.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Phase B snapshot diff
|
||||
|
||||
- canary snapshot: `audit-runs/phase-b-state-equivalence/snap-001/canary`
|
||||
- ours snapshot: `audit-runs/phase-b-state-equivalence/snap-001/ours`
|
||||
|
||||
## Invariants (HARD GATE)
|
||||
|
||||
| invariant | canary | ours | ok? |
|
||||
|---|---|---|---|
|
||||
| xex_entry_point | `0x824ab748` | `0x824ab748` | PASS |
|
||||
| cpu_state.pc == xex_entry_point | `0x824ab748 == 0x824ab748` | `0x824ab748 == 0x824ab748` | PASS |
|
||||
| image_loaded_sha256 | `a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c` | `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` | FAIL |
|
||||
|
||||
> **STOP**: a primary equivalence invariant failed. Downstream divergences are not interpretable until this is resolved. Re-run with `--phase-b-dump-section-content` on both engines and binary-diff the regions to localize.
|
||||
|
||||
## File-level summary
|
||||
|
||||
| file | status | divergence count by class |
|
||||
|---|---|---|
|
||||
| cpu_state.json | diverged | gamma-kernel-content=9 |
|
||||
| memory.json | diverged | sigma-structural=6 delta-content=4 gamma-kernel-content=17 |
|
||||
| kernel.json | diverged | sigma-structural=1 delta-content=1 gamma-kernel-content=12 |
|
||||
| vfs.json | diverged | gamma-kernel-content=5 |
|
||||
| config.json | diverged | sigma-structural=1 delta-content-STOP=1 delta-content=1 |
|
||||
|
||||
## σ-structural divergences (priority 1)
|
||||
|
||||
- **memory.json** `regions_walked`: kind=`extra-field` canary=`None` ours=`[]`
|
||||
- **memory.json** `heaps[base=0x00000000].page_state_histogram.free`: kind=`missing-field` canary=`261991` ours=`None`
|
||||
- **memory.json** `heaps[base=0x40000000].page_state_histogram.free`: kind=`missing-field` canary=`16098` ours=`None`
|
||||
- **memory.json** `heaps[base=0x80000000].page_state_histogram.free`: kind=`missing-field` canary=`3950` ours=`None`
|
||||
- **memory.json** `heaps[base=0x90000000].page_state_histogram.free`: kind=`missing-field` canary=`65536` ours=`None`
|
||||
- **memory.json** `heaps[base=0x90000000].page_state_histogram.committed`: kind=`extra-field` canary=`None` ours=`0`
|
||||
- **kernel.json** `exports_registered_sample`: kind=`seq-length` canary=`0` ours=`32`
|
||||
- **config.json** `cvars.phase_a_event_log_path`: kind=`missing-field` canary=`''` ours=`None`
|
||||
|
||||
## δ-content STOP divergences
|
||||
|
||||
- **config.json** `image_loaded_sha256`: kind=`value` canary=`'a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c'` ours=`'ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18'`
|
||||
|
||||
## δ-content divergences (priority 2)
|
||||
|
||||
- **memory.json** `regions[0].sha256`: kind=`value` canary=`'ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7'` ours=`'30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58'`
|
||||
- **memory.json** `regions[1].sha256`: kind=`value` canary=`'2390751521f95a4c513da387bc2ee8a82c5b9261bfc565be5e108fafbda61cf3'` ours=`'ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7'`
|
||||
- **memory.json** `regions[2].sha256`: kind=`value` canary=`'07854d2fef297a06ba81685e660c332de36d5d18d546927d30daad6d7fda1541'` ours=`'e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a'`
|
||||
- **memory.json** `regions[3].sha256`: kind=`value` canary=`'a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c'` ours=`'ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18'`
|
||||
- **kernel.json** `exports_registered_sha256`: kind=`value` canary=`'0000000000000000000000000000000000000000000000000000000000000000'` ours=`'bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09'`
|
||||
- **config.json** `xex_header_sha256`: kind=`value` canary=`'ccf935d24a74e002'` ours=`'0000000000000000000000000000000000000000000000000000000000000000'`
|
||||
|
||||
## γ-kernel-content divergences (priority 2)
|
||||
|
||||
- **cpu_state.json** `gpr[1]`: kind=`value` canary=`'0x00000000701d0000'` ours=`'0x00000000700fff00'`
|
||||
- **cpu_state.json** `gpr[13]`: kind=`value` canary=`'0x0000000030028000'` ours=`'0x000000007fff0000'`
|
||||
- **cpu_state.json** `lr`: kind=`value` canary=`'0x0000000000000000'` ours=`'0x00000000bcbcbcbc'`
|
||||
- **cpu_state.json** `pcr_base`: kind=`value` canary=`'0x30028000'` ours=`'0x7fff0000'`
|
||||
- **cpu_state.json** `stack_base`: kind=`value` canary=`'0x701d0000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `stack_limit`: kind=`value` canary=`'0x70150000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `thread_id`: kind=`value` canary=`6` ours=`1`
|
||||
- **cpu_state.json** `tls_base`: kind=`value` canary=`'0x30027000'` ours=`'0x00000000'`
|
||||
- **cpu_state.json** `vscr`: kind=`value` canary=`'00000000000000000000000000000100'` ours=`'00000000000000000000000000010000'`
|
||||
- **memory.json** `committed_pages_total`: kind=`value` canary=`2466` ours=`2594`
|
||||
- **memory.json** `heaps[base=0x00000000].page_state_histogram.committed`: kind=`value` canary=`153` ours=`0`
|
||||
- **memory.json** `heaps[base=0x40000000].page_size`: kind=`value` canary=`65536` ours=`4096`
|
||||
- **memory.json** `heaps[base=0x40000000].page_state_histogram.committed`: kind=`value` canary=`30` ours=`263`
|
||||
- **memory.json** `heaps[base=0x40000000].size`: kind=`value` canary=`'0x3f000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `heaps[base=0x80000000].page_size`: kind=`value` canary=`65536` ours=`4096`
|
||||
- **memory.json** `heaps[base=0x80000000].page_state_histogram.committed`: kind=`value` canary=`146` ours=`2336`
|
||||
- **memory.json** `heaps[base=0x80000000].size`: kind=`value` canary=`'0x10000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `heaps[base=0x90000000].size`: kind=`value` canary=`'0x10000000'` ours=`'0x40000000'`
|
||||
- **memory.json** `regions[0].byte_count`: kind=`value` canary=`4096` ours=`1048576`
|
||||
- **memory.json** `regions[0].end`: kind=`value` canary=`'0x30028000'` ours=`'0x70100000'`
|
||||
- **memory.json** `regions[0].start`: kind=`value` canary=`'0x30027000'` ours=`'0x70000000'`
|
||||
- **memory.json** `regions[1].end`: kind=`value` canary=`'0x30029000'` ours=`'0x7ffe1000'`
|
||||
- **memory.json** `regions[1].start`: kind=`value` canary=`'0x30028000'` ours=`'0x7ffe0000'`
|
||||
- **memory.json** `regions[2].byte_count`: kind=`value` canary=`524288` ours=`4096`
|
||||
- **memory.json** `regions[2].end`: kind=`value` canary=`'0x701d0000'` ours=`'0x7fff1000'`
|
||||
- **memory.json** `regions[2].start`: kind=`value` canary=`'0x70150000'` ours=`'0x7fff0000'`
|
||||
- **kernel.json** `objects[handle_semantic_id=0d6236cd0677766b]`: kind=`missing-from-ours` canary=`'0d6236cd0677766b'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0d8cd68a54c991e3]`: kind=`missing-from-ours` canary=`'0d8cd68a54c991e3'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0db6fd47a31adfc0]`: kind=`missing-from-ours` canary=`'0db6fd47a31adfc0'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=0e8c94fa2ab636b3]`: kind=`missing-from-ours` canary=`'0e8c94fa2ab636b3'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20b2d85926bc7b11]`: kind=`missing-from-ours` canary=`'20b2d85926bc7b11'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20b37f5926bd96d6]`: kind=`missing-from-ours` canary=`'20b37f5926bd96d6'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=20de1f16750fb24e]`: kind=`missing-from-ours` canary=`'20de1f16750fb24e'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=89cc99291d29ed5c]`: kind=`missing-from-ours` canary=`'89cc99291d29ed5c'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=8d4ce6ee5f4e68af]`: kind=`missing-from-ours` canary=`'8d4ce6ee5f4e68af'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=8d7786abada08427]`: kind=`missing-from-ours` canary=`'8d7786abada08427'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=a0c8cf37cde6a492]`: kind=`missing-from-ours` canary=`'a0c8cf37cde6a492'` ours=`None`
|
||||
- **kernel.json** `objects[handle_semantic_id=9879c5053fedb1d0]`: kind=`extra-in-ours` canary=`None` ours=`'9879c5053fedb1d0'`
|
||||
- **vfs.json** `resolve_path_probes[0].size`: kind=`type-mismatch` canary=`0` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[2].is_directory`: kind=`type-mismatch` canary=`True` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[2].resolved`: kind=`value` canary=`True` ours=`False`
|
||||
- **vfs.json** `resolve_path_probes[2].size`: kind=`type-mismatch` canary=`4096` ours=`None`
|
||||
- **vfs.json** `resolve_path_probes[6].size`: kind=`type-mismatch` canary=`0` ours=`None`
|
||||
|
||||
## Phase C handoff
|
||||
|
||||
Suggested attack order: σ first (structural), then γ ranked by object type (Thread > Event > Semaphore > Mutex > Timer > File > Other), then δ. ε and τ are catalog-only.
|
||||
25
audit-runs/phase-ab-verify/snap-002a/ours/config.json
Normal file
25
audit-runs/phase-ab-verify/snap-002a/ours/config.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"build_id": "ours-phaseB",
|
||||
"cvars": {
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "audit-runs/phase-ab-verify/snap-002a"
|
||||
},
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
],
|
||||
"engine": "ours",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"image_loaded_sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"iso_path": "",
|
||||
"schema_version": 1,
|
||||
"wall_clock_iso8601": "epoch:0",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_header_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/snap-002a/ours/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/snap-002a/ours/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"ctr": "0x0000000000000000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
],
|
||||
"engine": "ours",
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpscr": "0x00000000",
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000700fff00",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x000000007fff0000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"hw_id": 0,
|
||||
"lr": "0x00000000bcbcbcbc",
|
||||
"msr": "0x0000000000009030",
|
||||
"pc": "0x824ab748",
|
||||
"pcr_base": "0x7fff0000",
|
||||
"schema_version": 1,
|
||||
"stack_base": "0x00000000",
|
||||
"stack_limit": "0x00000000",
|
||||
"thread_id": 1,
|
||||
"tls_base": "0x00000000",
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vrsave": "0xffffffff",
|
||||
"vscr": "00000000000000000000000000010000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
}
|
||||
}
|
||||
62
audit-runs/phase-ab-verify/snap-002a/ours/kernel.json
Normal file
62
audit-runs/phase-ab-verify/snap-002a/ours/kernel.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
],
|
||||
"engine": "ours",
|
||||
"exports_registered_count": 199,
|
||||
"exports_registered_sample": [
|
||||
"xam.xex!NetDll_WSACleanup",
|
||||
"xam.xex!NetDll_WSAStartup",
|
||||
"xam.xex!XGetAVPack",
|
||||
"xam.xex!XGetGameRegion",
|
||||
"xam.xex!XGetLanguage",
|
||||
"xam.xex!XGetVideoMode",
|
||||
"xam.xex!XMsgInProcessCall",
|
||||
"xam.xex!XMsgStartIORequest",
|
||||
"xam.xex!XMsgStartIORequestEx",
|
||||
"xam.xex!XNotifyGetNext",
|
||||
"xam.xex!XNotifyPositionUI",
|
||||
"xam.xex!XamAlloc",
|
||||
"xam.xex!XamContentClose",
|
||||
"xam.xex!XamContentCreate",
|
||||
"xam.xex!XamContentCreateEnumerator",
|
||||
"xam.xex!XamContentDelete",
|
||||
"xam.xex!XamContentGetCreator",
|
||||
"xam.xex!XamContentGetDeviceData",
|
||||
"xam.xex!XamContentGetDeviceName",
|
||||
"xam.xex!XamContentGetDeviceState",
|
||||
"xam.xex!XamContentSetThumbnail",
|
||||
"xam.xex!XamEnableInactivityProcessing",
|
||||
"xam.xex!XamEnumerate",
|
||||
"xam.xex!XamFree",
|
||||
"xam.xex!XamGetExecutionId",
|
||||
"xam.xex!XamGetSystemVersion",
|
||||
"xam.xex!XamInputGetCapabilities",
|
||||
"xam.xex!XamInputGetKeystrokeEx",
|
||||
"xam.xex!XamInputGetState",
|
||||
"xam.xex!XamInputSetState",
|
||||
"xam.xex!XamLoaderLaunchTitle",
|
||||
"xam.xex!XamLoaderTerminateTitle"
|
||||
],
|
||||
"exports_registered_sha256": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"entry_pc": "0x824ab748",
|
||||
"exit_code": null,
|
||||
"hw_id": 0,
|
||||
"is_entry_thread": true,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "9879c5053fedb1d0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x00001000",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
11
audit-runs/phase-ab-verify/snap-002a/ours/manifest.json
Normal file
11
audit-runs/phase-ab-verify/snap-002a/ours/manifest.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"engine": "ours",
|
||||
"files": {
|
||||
"config.json": "06d39edc1f1877cc8df6e96df34c8835e7cd070da340d146f9b16e931cecb229",
|
||||
"cpu_state.json": "4e6df54ca1939d08854f3a52b49ed2c5ee0823d63cdecad8a7395203dac5443a",
|
||||
"kernel.json": "b64ea3a6c14f1b0aaadc6de8adbb894edf636a813120d08028ca096e1d06bacc",
|
||||
"memory.json": "8ff1253f790f3f2645e9f47fb50fa7b52073ae2e73fe5ef68ff6d53af59681dd",
|
||||
"vfs.json": "97bb2bda57266d8e0dd1da13309eab5ece43130ef378a0b682917d299e9dc4e1"
|
||||
},
|
||||
"schema_version": 1
|
||||
}
|
||||
84
audit-runs/phase-ab-verify/snap-002a/ours/memory.json
Normal file
84
audit-runs/phase-ab-verify/snap-002a/ours/memory.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"committed_pages_total": 2594,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
],
|
||||
"engine": "ours",
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 263
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 2336
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
}
|
||||
],
|
||||
"page_size": 4096,
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 1048576,
|
||||
"end": "0x70100000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"start": "0x70000000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7ffe1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x7ffe0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7fff1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"start": "0x7fff0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"regions_walked": [],
|
||||
"schema_version": 1,
|
||||
"section_contents": null
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/snap-002a/ours/vfs.json
Normal file
71
audit-runs/phase-ab-verify/snap-002a/ours/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
],
|
||||
"engine": "ours",
|
||||
"mounted_devices_observed_count": 1,
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
25
audit-runs/phase-ab-verify/snap-002b/ours/config.json
Normal file
25
audit-runs/phase-ab-verify/snap-002b/ours/config.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"build_id": "ours-phaseB",
|
||||
"cvars": {
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "audit-runs/phase-ab-verify/snap-002b"
|
||||
},
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
],
|
||||
"engine": "ours",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"image_loaded_sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"iso_path": "",
|
||||
"schema_version": 1,
|
||||
"wall_clock_iso8601": "epoch:0",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_header_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/snap-002b/ours/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/snap-002b/ours/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"ctr": "0x0000000000000000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
],
|
||||
"engine": "ours",
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpscr": "0x00000000",
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000700fff00",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x000000007fff0000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"hw_id": 0,
|
||||
"lr": "0x00000000bcbcbcbc",
|
||||
"msr": "0x0000000000009030",
|
||||
"pc": "0x824ab748",
|
||||
"pcr_base": "0x7fff0000",
|
||||
"schema_version": 1,
|
||||
"stack_base": "0x00000000",
|
||||
"stack_limit": "0x00000000",
|
||||
"thread_id": 1,
|
||||
"tls_base": "0x00000000",
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vrsave": "0xffffffff",
|
||||
"vscr": "00000000000000000000000000010000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
}
|
||||
}
|
||||
62
audit-runs/phase-ab-verify/snap-002b/ours/kernel.json
Normal file
62
audit-runs/phase-ab-verify/snap-002b/ours/kernel.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
],
|
||||
"engine": "ours",
|
||||
"exports_registered_count": 199,
|
||||
"exports_registered_sample": [
|
||||
"xam.xex!NetDll_WSACleanup",
|
||||
"xam.xex!NetDll_WSAStartup",
|
||||
"xam.xex!XGetAVPack",
|
||||
"xam.xex!XGetGameRegion",
|
||||
"xam.xex!XGetLanguage",
|
||||
"xam.xex!XGetVideoMode",
|
||||
"xam.xex!XMsgInProcessCall",
|
||||
"xam.xex!XMsgStartIORequest",
|
||||
"xam.xex!XMsgStartIORequestEx",
|
||||
"xam.xex!XNotifyGetNext",
|
||||
"xam.xex!XNotifyPositionUI",
|
||||
"xam.xex!XamAlloc",
|
||||
"xam.xex!XamContentClose",
|
||||
"xam.xex!XamContentCreate",
|
||||
"xam.xex!XamContentCreateEnumerator",
|
||||
"xam.xex!XamContentDelete",
|
||||
"xam.xex!XamContentGetCreator",
|
||||
"xam.xex!XamContentGetDeviceData",
|
||||
"xam.xex!XamContentGetDeviceName",
|
||||
"xam.xex!XamContentGetDeviceState",
|
||||
"xam.xex!XamContentSetThumbnail",
|
||||
"xam.xex!XamEnableInactivityProcessing",
|
||||
"xam.xex!XamEnumerate",
|
||||
"xam.xex!XamFree",
|
||||
"xam.xex!XamGetExecutionId",
|
||||
"xam.xex!XamGetSystemVersion",
|
||||
"xam.xex!XamInputGetCapabilities",
|
||||
"xam.xex!XamInputGetKeystrokeEx",
|
||||
"xam.xex!XamInputGetState",
|
||||
"xam.xex!XamInputSetState",
|
||||
"xam.xex!XamLoaderLaunchTitle",
|
||||
"xam.xex!XamLoaderTerminateTitle"
|
||||
],
|
||||
"exports_registered_sha256": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"entry_pc": "0x824ab748",
|
||||
"exit_code": null,
|
||||
"hw_id": 0,
|
||||
"is_entry_thread": true,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "9879c5053fedb1d0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x00001000",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
11
audit-runs/phase-ab-verify/snap-002b/ours/manifest.json
Normal file
11
audit-runs/phase-ab-verify/snap-002b/ours/manifest.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"engine": "ours",
|
||||
"files": {
|
||||
"config.json": "332be89dbc9ede421cac7120d7fca124a44ad90309623d72851574e59d83b9b0",
|
||||
"cpu_state.json": "4e6df54ca1939d08854f3a52b49ed2c5ee0823d63cdecad8a7395203dac5443a",
|
||||
"kernel.json": "b64ea3a6c14f1b0aaadc6de8adbb894edf636a813120d08028ca096e1d06bacc",
|
||||
"memory.json": "8ff1253f790f3f2645e9f47fb50fa7b52073ae2e73fe5ef68ff6d53af59681dd",
|
||||
"vfs.json": "97bb2bda57266d8e0dd1da13309eab5ece43130ef378a0b682917d299e9dc4e1"
|
||||
},
|
||||
"schema_version": 1
|
||||
}
|
||||
84
audit-runs/phase-ab-verify/snap-002b/ours/memory.json
Normal file
84
audit-runs/phase-ab-verify/snap-002b/ours/memory.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"committed_pages_total": 2594,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
],
|
||||
"engine": "ours",
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 263
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 2336
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
}
|
||||
],
|
||||
"page_size": 4096,
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 1048576,
|
||||
"end": "0x70100000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"start": "0x70000000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7ffe1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x7ffe0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7fff1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"start": "0x7fff0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"regions_walked": [],
|
||||
"schema_version": 1,
|
||||
"section_contents": null
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/snap-002b/ours/vfs.json
Normal file
71
audit-runs/phase-ab-verify/snap-002b/ours/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
],
|
||||
"engine": "ours",
|
||||
"mounted_devices_observed_count": 1,
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
25
audit-runs/phase-ab-verify/snap-002c/ours-1/config.json
Normal file
25
audit-runs/phase-ab-verify/snap-002c/ours-1/config.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"build_id": "ours-phaseB",
|
||||
"cvars": {
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "audit-runs/phase-ab-verify/snap-002c"
|
||||
},
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
],
|
||||
"engine": "ours",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"image_loaded_sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"iso_path": "",
|
||||
"schema_version": 1,
|
||||
"wall_clock_iso8601": "epoch:0",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_header_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/snap-002c/ours-1/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/snap-002c/ours-1/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"ctr": "0x0000000000000000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
],
|
||||
"engine": "ours",
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpscr": "0x00000000",
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000700fff00",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x000000007fff0000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"hw_id": 0,
|
||||
"lr": "0x00000000bcbcbcbc",
|
||||
"msr": "0x0000000000009030",
|
||||
"pc": "0x824ab748",
|
||||
"pcr_base": "0x7fff0000",
|
||||
"schema_version": 1,
|
||||
"stack_base": "0x00000000",
|
||||
"stack_limit": "0x00000000",
|
||||
"thread_id": 1,
|
||||
"tls_base": "0x00000000",
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vrsave": "0xffffffff",
|
||||
"vscr": "00000000000000000000000000010000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
}
|
||||
}
|
||||
62
audit-runs/phase-ab-verify/snap-002c/ours-1/kernel.json
Normal file
62
audit-runs/phase-ab-verify/snap-002c/ours-1/kernel.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
],
|
||||
"engine": "ours",
|
||||
"exports_registered_count": 199,
|
||||
"exports_registered_sample": [
|
||||
"xam.xex!NetDll_WSACleanup",
|
||||
"xam.xex!NetDll_WSAStartup",
|
||||
"xam.xex!XGetAVPack",
|
||||
"xam.xex!XGetGameRegion",
|
||||
"xam.xex!XGetLanguage",
|
||||
"xam.xex!XGetVideoMode",
|
||||
"xam.xex!XMsgInProcessCall",
|
||||
"xam.xex!XMsgStartIORequest",
|
||||
"xam.xex!XMsgStartIORequestEx",
|
||||
"xam.xex!XNotifyGetNext",
|
||||
"xam.xex!XNotifyPositionUI",
|
||||
"xam.xex!XamAlloc",
|
||||
"xam.xex!XamContentClose",
|
||||
"xam.xex!XamContentCreate",
|
||||
"xam.xex!XamContentCreateEnumerator",
|
||||
"xam.xex!XamContentDelete",
|
||||
"xam.xex!XamContentGetCreator",
|
||||
"xam.xex!XamContentGetDeviceData",
|
||||
"xam.xex!XamContentGetDeviceName",
|
||||
"xam.xex!XamContentGetDeviceState",
|
||||
"xam.xex!XamContentSetThumbnail",
|
||||
"xam.xex!XamEnableInactivityProcessing",
|
||||
"xam.xex!XamEnumerate",
|
||||
"xam.xex!XamFree",
|
||||
"xam.xex!XamGetExecutionId",
|
||||
"xam.xex!XamGetSystemVersion",
|
||||
"xam.xex!XamInputGetCapabilities",
|
||||
"xam.xex!XamInputGetKeystrokeEx",
|
||||
"xam.xex!XamInputGetState",
|
||||
"xam.xex!XamInputSetState",
|
||||
"xam.xex!XamLoaderLaunchTitle",
|
||||
"xam.xex!XamLoaderTerminateTitle"
|
||||
],
|
||||
"exports_registered_sha256": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"entry_pc": "0x824ab748",
|
||||
"exit_code": null,
|
||||
"hw_id": 0,
|
||||
"is_entry_thread": true,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "9879c5053fedb1d0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x00001000",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
11
audit-runs/phase-ab-verify/snap-002c/ours-1/manifest.json
Normal file
11
audit-runs/phase-ab-verify/snap-002c/ours-1/manifest.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"engine": "ours",
|
||||
"files": {
|
||||
"config.json": "b7dd769ac76b2fb0ec22d3dec66f1e8fc28b3958c0114079bd7527ade85dde5e",
|
||||
"cpu_state.json": "4e6df54ca1939d08854f3a52b49ed2c5ee0823d63cdecad8a7395203dac5443a",
|
||||
"kernel.json": "b64ea3a6c14f1b0aaadc6de8adbb894edf636a813120d08028ca096e1d06bacc",
|
||||
"memory.json": "8ff1253f790f3f2645e9f47fb50fa7b52073ae2e73fe5ef68ff6d53af59681dd",
|
||||
"vfs.json": "97bb2bda57266d8e0dd1da13309eab5ece43130ef378a0b682917d299e9dc4e1"
|
||||
},
|
||||
"schema_version": 1
|
||||
}
|
||||
84
audit-runs/phase-ab-verify/snap-002c/ours-1/memory.json
Normal file
84
audit-runs/phase-ab-verify/snap-002c/ours-1/memory.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"committed_pages_total": 2594,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
],
|
||||
"engine": "ours",
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 263
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 2336
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
}
|
||||
],
|
||||
"page_size": 4096,
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 1048576,
|
||||
"end": "0x70100000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"start": "0x70000000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7ffe1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x7ffe0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7fff1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"start": "0x7fff0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"regions_walked": [],
|
||||
"schema_version": 1,
|
||||
"section_contents": null
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/snap-002c/ours-1/vfs.json
Normal file
71
audit-runs/phase-ab-verify/snap-002c/ours-1/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
],
|
||||
"engine": "ours",
|
||||
"mounted_devices_observed_count": 1,
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
25
audit-runs/phase-ab-verify/snap-002c/ours/config.json
Normal file
25
audit-runs/phase-ab-verify/snap-002c/ours/config.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"build_id": "ours-phaseB",
|
||||
"cvars": {
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "audit-runs/phase-ab-verify/snap-002c"
|
||||
},
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
],
|
||||
"engine": "ours",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"image_loaded_sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"iso_path": "",
|
||||
"schema_version": 1,
|
||||
"wall_clock_iso8601": "epoch:0",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_header_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/snap-002c/ours/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/snap-002c/ours/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"ctr": "0x0000000000000000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
],
|
||||
"engine": "ours",
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpscr": "0x00000000",
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000700fff00",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x000000007fff0000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"hw_id": 0,
|
||||
"lr": "0x00000000bcbcbcbc",
|
||||
"msr": "0x0000000000009030",
|
||||
"pc": "0x824ab748",
|
||||
"pcr_base": "0x7fff0000",
|
||||
"schema_version": 1,
|
||||
"stack_base": "0x00000000",
|
||||
"stack_limit": "0x00000000",
|
||||
"thread_id": 1,
|
||||
"tls_base": "0x00000000",
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vrsave": "0xffffffff",
|
||||
"vscr": "00000000000000000000000000010000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
}
|
||||
}
|
||||
62
audit-runs/phase-ab-verify/snap-002c/ours/kernel.json
Normal file
62
audit-runs/phase-ab-verify/snap-002c/ours/kernel.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
],
|
||||
"engine": "ours",
|
||||
"exports_registered_count": 199,
|
||||
"exports_registered_sample": [
|
||||
"xam.xex!NetDll_WSACleanup",
|
||||
"xam.xex!NetDll_WSAStartup",
|
||||
"xam.xex!XGetAVPack",
|
||||
"xam.xex!XGetGameRegion",
|
||||
"xam.xex!XGetLanguage",
|
||||
"xam.xex!XGetVideoMode",
|
||||
"xam.xex!XMsgInProcessCall",
|
||||
"xam.xex!XMsgStartIORequest",
|
||||
"xam.xex!XMsgStartIORequestEx",
|
||||
"xam.xex!XNotifyGetNext",
|
||||
"xam.xex!XNotifyPositionUI",
|
||||
"xam.xex!XamAlloc",
|
||||
"xam.xex!XamContentClose",
|
||||
"xam.xex!XamContentCreate",
|
||||
"xam.xex!XamContentCreateEnumerator",
|
||||
"xam.xex!XamContentDelete",
|
||||
"xam.xex!XamContentGetCreator",
|
||||
"xam.xex!XamContentGetDeviceData",
|
||||
"xam.xex!XamContentGetDeviceName",
|
||||
"xam.xex!XamContentGetDeviceState",
|
||||
"xam.xex!XamContentSetThumbnail",
|
||||
"xam.xex!XamEnableInactivityProcessing",
|
||||
"xam.xex!XamEnumerate",
|
||||
"xam.xex!XamFree",
|
||||
"xam.xex!XamGetExecutionId",
|
||||
"xam.xex!XamGetSystemVersion",
|
||||
"xam.xex!XamInputGetCapabilities",
|
||||
"xam.xex!XamInputGetKeystrokeEx",
|
||||
"xam.xex!XamInputGetState",
|
||||
"xam.xex!XamInputSetState",
|
||||
"xam.xex!XamLoaderLaunchTitle",
|
||||
"xam.xex!XamLoaderTerminateTitle"
|
||||
],
|
||||
"exports_registered_sha256": "bb97815f82b2313c9eaa07bf80dab47c5c23408c24203a1283dfb2aba1e84e09",
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"entry_pc": "0x824ab748",
|
||||
"exit_code": null,
|
||||
"hw_id": 0,
|
||||
"is_entry_thread": true,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "9879c5053fedb1d0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x00001000",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
11
audit-runs/phase-ab-verify/snap-002c/ours/manifest.json
Normal file
11
audit-runs/phase-ab-verify/snap-002c/ours/manifest.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"engine": "ours",
|
||||
"files": {
|
||||
"config.json": "b7dd769ac76b2fb0ec22d3dec66f1e8fc28b3958c0114079bd7527ade85dde5e",
|
||||
"cpu_state.json": "4e6df54ca1939d08854f3a52b49ed2c5ee0823d63cdecad8a7395203dac5443a",
|
||||
"kernel.json": "b64ea3a6c14f1b0aaadc6de8adbb894edf636a813120d08028ca096e1d06bacc",
|
||||
"memory.json": "8ff1253f790f3f2645e9f47fb50fa7b52073ae2e73fe5ef68ff6d53af59681dd",
|
||||
"vfs.json": "97bb2bda57266d8e0dd1da13309eab5ece43130ef378a0b682917d299e9dc4e1"
|
||||
},
|
||||
"schema_version": 1
|
||||
}
|
||||
84
audit-runs/phase-ab-verify/snap-002c/ours/memory.json
Normal file
84
audit-runs/phase-ab-verify/snap-002c/ours/memory.json
Normal file
@@ -0,0 +1,84 @@
|
||||
{
|
||||
"committed_pages_total": 2594,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
],
|
||||
"engine": "ours",
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 263
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 2336
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 0
|
||||
},
|
||||
"size": "0x40000000"
|
||||
}
|
||||
],
|
||||
"page_size": 4096,
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 1048576,
|
||||
"end": "0x70100000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "30e14955ebf1352266dc2ff8067e68104607e750abb9d3b36582b8af909fcb58",
|
||||
"start": "0x70000000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7ffe1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x7ffe0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x7fff1000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "e35cddaf9c210aed7505ec4cf1c599f58ac2b7ec25b0885db1ee49aba2db519a",
|
||||
"start": "0x7fff0000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"regions_walked": [],
|
||||
"schema_version": 1,
|
||||
"section_contents": null
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/snap-002c/ours/vfs.json
Normal file
71
audit-runs/phase-ab-verify/snap-002c/ours/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
],
|
||||
"engine": "ours",
|
||||
"mounted_devices_observed_count": 1,
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"schema_version": 1
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"build_id": "canary-phaseB",
|
||||
"iso_path": "\\Device\\Cdrom0\\default.xex",
|
||||
"xex_entry_point": "0x824ab748",
|
||||
"xex_image_base": "0x82000000",
|
||||
"xex_image_size": 9568256,
|
||||
"image_loaded_sha256": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"xex_header_sha256": "ccf935d24a74e002",
|
||||
"cvars": {
|
||||
"phase_a_event_log_path": "",
|
||||
"phase_b_dump_section_content": false,
|
||||
"phase_b_snapshot_and_exit": true,
|
||||
"phase_b_snapshot_dir": "Z:\\home\\fabi\\RE - Project Sylpheed\\xenia-rs\\audit-runs\\phase-ab-verify\\snap-canary-002"
|
||||
},
|
||||
"wall_clock_iso8601": "epoch:1778703060",
|
||||
"host_ns_at_snapshot": 0,
|
||||
"deterministic_skip": [
|
||||
"host_ns_at_snapshot",
|
||||
"wall_clock_iso8601",
|
||||
"build_id",
|
||||
"iso_path",
|
||||
"cvars.phase_b_snapshot_dir"
|
||||
]
|
||||
}
|
||||
234
audit-runs/phase-ab-verify/snap-canary-002/canary/cpu_state.json
Normal file
234
audit-runs/phase-ab-verify/snap-canary-002/canary/cpu_state.json
Normal file
@@ -0,0 +1,234 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"pc": "0x824ab748",
|
||||
"lr": "0x0000000000000000",
|
||||
"ctr": "0x0000000000000000",
|
||||
"msr": "0x0000000000009030",
|
||||
"vrsave": "0xffffffff",
|
||||
"fpscr": "0x00000000",
|
||||
"xer": {
|
||||
"ca": 0,
|
||||
"ov": 0,
|
||||
"so": 0,
|
||||
"tbc": 0
|
||||
},
|
||||
"cr": [
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0",
|
||||
"0x0"
|
||||
],
|
||||
"gpr": [
|
||||
"0x0000000000000000",
|
||||
"0x00000000701d0000",
|
||||
"0x0000000020000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000030028000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"fpr": [
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000",
|
||||
"0x0000000000000000"
|
||||
],
|
||||
"vr": [
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000",
|
||||
"00000000000000000000000000000000"
|
||||
],
|
||||
"vscr": "00000000000000000000000000000100",
|
||||
"thread_id": 6,
|
||||
"hw_id": 0,
|
||||
"stack_base": "0x701d0000",
|
||||
"stack_limit": "0x70150000",
|
||||
"tls_base": "0x30027000",
|
||||
"pcr_base": "0x30028000",
|
||||
"deterministic_skip": [
|
||||
"hw_id"
|
||||
]
|
||||
}
|
||||
151
audit-runs/phase-ab-verify/snap-canary-002/canary/kernel.json
Normal file
151
audit-runs/phase-ab-verify/snap-canary-002/canary/kernel.json
Normal file
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"objects": [
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x00000000",
|
||||
"is_entry_thread": false,
|
||||
"priority": 0,
|
||||
"stack_size": 131072,
|
||||
"suspended": false,
|
||||
"thread_id": 3
|
||||
},
|
||||
"handle_semantic_id": "0d6236cd0677766b",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000018",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x00000000",
|
||||
"is_entry_thread": false,
|
||||
"priority": 0,
|
||||
"stack_size": 131072,
|
||||
"suspended": false,
|
||||
"thread_id": 1
|
||||
},
|
||||
"handle_semantic_id": "0d8cd68a54c991e3",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000010",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x824ab748",
|
||||
"is_entry_thread": true,
|
||||
"priority": 13,
|
||||
"stack_size": 524288,
|
||||
"suspended": false,
|
||||
"thread_id": 6
|
||||
},
|
||||
"handle_semantic_id": "0db6fd47a31adfc0",
|
||||
"name": null,
|
||||
"raw_handle_id": "0xf8000008",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x00000000",
|
||||
"is_entry_thread": false,
|
||||
"priority": 5,
|
||||
"stack_size": 131072,
|
||||
"suspended": false,
|
||||
"thread_id": 5
|
||||
},
|
||||
"handle_semantic_id": "0e8c94fa2ab636b3",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000020",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {},
|
||||
"handle_semantic_id": "20b2d85926bc7b11",
|
||||
"name": null,
|
||||
"raw_handle_id": "0xf8000004",
|
||||
"type": "Module",
|
||||
"type_code": 8
|
||||
},
|
||||
{
|
||||
"details": {},
|
||||
"handle_semantic_id": "20b37f5926bd96d6",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000004",
|
||||
"type": "Module",
|
||||
"type_code": 8
|
||||
},
|
||||
{
|
||||
"details": {},
|
||||
"handle_semantic_id": "20de1f16750fb24e",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x0100000c",
|
||||
"type": "Module",
|
||||
"type_code": 8
|
||||
},
|
||||
{
|
||||
"details": {},
|
||||
"handle_semantic_id": "89cc99291d29ed5c",
|
||||
"name": null,
|
||||
"raw_handle_id": "0xf8000000",
|
||||
"type": "Event",
|
||||
"type_code": 1
|
||||
},
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x00000000",
|
||||
"is_entry_thread": false,
|
||||
"priority": 5,
|
||||
"stack_size": 131072,
|
||||
"suspended": false,
|
||||
"thread_id": 4
|
||||
},
|
||||
"handle_semantic_id": "8d4ce6ee5f4e68af",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x0100001c",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {
|
||||
"ctx_ptr": "0x00000000",
|
||||
"entry_pc": "0x00000000",
|
||||
"is_entry_thread": false,
|
||||
"priority": 0,
|
||||
"stack_size": 131072,
|
||||
"suspended": false,
|
||||
"thread_id": 2
|
||||
},
|
||||
"handle_semantic_id": "8d7786abada08427",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000014",
|
||||
"type": "Thread",
|
||||
"type_code": 5
|
||||
},
|
||||
{
|
||||
"details": {},
|
||||
"handle_semantic_id": "a0c8cf37cde6a492",
|
||||
"name": null,
|
||||
"raw_handle_id": "0x01000008",
|
||||
"type": "Module",
|
||||
"type_code": 8
|
||||
}
|
||||
],
|
||||
"handle_name_table": [],
|
||||
"notification_listeners": [],
|
||||
"exports_registered_count": 0,
|
||||
"exports_registered_sample": [],
|
||||
"exports_registered_sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"deterministic_skip": [
|
||||
"raw_handle_id",
|
||||
"exports_registered_count"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"files": {
|
||||
"config.json": "fbcaaba400e1fcc39eade7ac54c423ad06bd37cf594c3a3275a64288ff433122",
|
||||
"cpu_state.json": "b57464533ac776df8d9f752678bca1a9ba7df77adc896eb313766952a50326dd",
|
||||
"kernel.json": "78affa1cbb3bc93402a9c0e8686c9a632a5ce0b676999e68aad05e972b0dbc7b",
|
||||
"memory.json": "18e39edfd15ce93042f2fe522254136b55d816df196164d5e2580751d2238e25",
|
||||
"vfs.json": "93a5ee2826dc85d0d2c0559287a096b2d52e1f84fef8921ad024a1ca18c445ff"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"page_size": 4096,
|
||||
"guest_address_space_bytes": 4294967296,
|
||||
"heaps": [
|
||||
{
|
||||
"base": "0x00000000",
|
||||
"name": "v00000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"committed": 153,
|
||||
"free": 261991
|
||||
},
|
||||
"size": "0x40000000"
|
||||
},
|
||||
{
|
||||
"base": "0x40000000",
|
||||
"name": "v40000000",
|
||||
"page_size": 65536,
|
||||
"page_state_histogram": {
|
||||
"committed": 30,
|
||||
"free": 16098
|
||||
},
|
||||
"size": "0x3f000000"
|
||||
},
|
||||
{
|
||||
"base": "0x80000000",
|
||||
"name": "v80000000",
|
||||
"page_size": 65536,
|
||||
"page_state_histogram": {
|
||||
"committed": 146,
|
||||
"free": 3950
|
||||
},
|
||||
"size": "0x10000000"
|
||||
},
|
||||
{
|
||||
"base": "0x90000000",
|
||||
"name": "v90000000",
|
||||
"page_size": 4096,
|
||||
"page_state_histogram": {
|
||||
"free": 65536
|
||||
},
|
||||
"size": "0x10000000"
|
||||
}
|
||||
],
|
||||
"regions": [
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x30028000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "ad7facb2586fc6e966c004d7d1d16b024f5805ff7cb47c7a85dabd8b48892ca7",
|
||||
"start": "0x30027000"
|
||||
},
|
||||
{
|
||||
"byte_count": 4096,
|
||||
"end": "0x30029000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "2390751521f95a4c513da387bc2ee8a82c5b9261bfc565be5e108fafbda61cf3",
|
||||
"start": "0x30028000"
|
||||
},
|
||||
{
|
||||
"byte_count": 524288,
|
||||
"end": "0x701d0000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "07854d2fef297a06ba81685e660c332de36d5d18d546927d30daad6d7fda1541",
|
||||
"start": "0x70150000"
|
||||
},
|
||||
{
|
||||
"byte_count": 9568256,
|
||||
"end": "0x82920000",
|
||||
"protect": 0,
|
||||
"section_kind": null,
|
||||
"sha256": "a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c",
|
||||
"start": "0x82000000"
|
||||
}
|
||||
],
|
||||
"committed_pages_total": 2466,
|
||||
"section_contents": null,
|
||||
"deterministic_skip": [
|
||||
"host_base_pointer"
|
||||
]
|
||||
}
|
||||
71
audit-runs/phase-ab-verify/snap-canary-002/canary/vfs.json
Normal file
71
audit-runs/phase-ab-verify/snap-canary-002/canary/vfs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"engine": "canary",
|
||||
"resolve_path_probes": [
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0",
|
||||
"resolved": true,
|
||||
"size": 0
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\Cdrom0\\dat\\movie\\opening.bik",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "\\Device\\Cdrom0\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "\\Device\\HardDisk0\\Partition1",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "cache:\\",
|
||||
"resolved": true,
|
||||
"size": 0
|
||||
},
|
||||
{
|
||||
"is_directory": null,
|
||||
"path": "cache:\\nonexistent_probe",
|
||||
"resolved": false,
|
||||
"size": null
|
||||
},
|
||||
{
|
||||
"is_directory": true,
|
||||
"path": "game:\\dat",
|
||||
"resolved": true,
|
||||
"size": 4096
|
||||
},
|
||||
{
|
||||
"is_directory": false,
|
||||
"path": "game:\\default.xex",
|
||||
"resolved": true,
|
||||
"size": 3497984
|
||||
}
|
||||
],
|
||||
"mounted_devices_observed_count": 1,
|
||||
"cache_root_listing": [],
|
||||
"deterministic_skip": [
|
||||
"host_path_realpath"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
292
audit-runs/phase-ab-verify/verification-report.md
Normal file
292
audit-runs/phase-ab-verify/verification-report.md
Normal file
@@ -0,0 +1,292 @@
|
||||
# Phase A + Phase B verification report
|
||||
|
||||
Session: 2026-05-13. Reviewer: WRITE-mode verify pass over Phase A
|
||||
(`audit-runs/phase-a-diff-harness/`) and Phase B
|
||||
(`audit-runs/phase-b-state-equivalence/`) deliverables. Discipline:
|
||||
no Phase C investigation, no XEX sha256 chase, no anchor-on-divergence.
|
||||
|
||||
## Outcome
|
||||
|
||||
| Phase | Gates | Pre-fix | Post-fix |
|
||||
|---|---|---|---|
|
||||
| A | 4 | 4/4 PASS | 4/4 PASS |
|
||||
| B | 5 | 4/5 PASS — gate 5 produced false-PASS | 5/5 PASS |
|
||||
| Combined cvar-OFF determinism | 1 | PASS | PASS |
|
||||
| Diff-tool synthetic edge cases | 5 (each tool) | PASS | PASS |
|
||||
| Hook-point semantic equivalence | 2 (Phase A + Phase B) | PASS | PASS |
|
||||
|
||||
The "false-PASS" pre-fix is HIGH-severity and is detailed in
|
||||
`Issue-1` below. Without the fix, the negative-test gate of Phase B
|
||||
silently passed when the test was actually broken — meaning a tampered
|
||||
snapshot file with an intact manifest copy would have been reported as
|
||||
"identical" by `diff_state.py`. The Phase B catalog (canary↔ours
|
||||
divergences) is unaffected by this bug because canary's manifest hashes
|
||||
legitimately differ from ours's, so the buggy short-circuit never
|
||||
engaged for any real Phase B comparison.
|
||||
|
||||
## Issues found and resolutions
|
||||
|
||||
### Issue 1 — HIGH: `diff_state.py` manifest-hash short-circuit trusts
|
||||
manifests without verification
|
||||
|
||||
**Symptom.** Re-running `validation.md` gate 5 verbatim produces
|
||||
`exit 0` and "0 divergences", *not* the documented `exit 1`. The
|
||||
mutation (changing `kernel.json` `thread_id: 1` → `thread_id: 999`) is
|
||||
silently masked because the gate-5 procedure copies the original
|
||||
`manifest.json` alongside the mutated file. Both manifests then claim
|
||||
the same kernel.json hash, so the diff tool's manifest-hash
|
||||
short-circuit (`if ch == oh: file_status[name] = "identical"`) reports
|
||||
the file as identical without comparing content.
|
||||
|
||||
**Reproduction.** `audit-runs/phase-ab-verify/synthetic-diff-tests/`
|
||||
plus the verbatim gate-5 procedure (see this report's
|
||||
`Re-validation gate 5`).
|
||||
|
||||
**Fix.** Patched
|
||||
[`tools/diff-state/diff_state.py`](../../tools/diff-state/diff_state.py)
|
||||
`diff_directory` to re-hash both files when manifests claim equality
|
||||
and only short-circuit when the on-disk SHAs match the manifest. When
|
||||
they don't, a `manifest-hash-mismatch` σ-structural divergence is
|
||||
emitted *and* the file is fully content-diffed, ensuring no silent
|
||||
masking.
|
||||
|
||||
**Re-validation.**
|
||||
- Verbatim gate-5 procedure now exits `1` and names the divergence
|
||||
precisely (`kernel.json objects[handle_semantic_id=…].details.thread_id
|
||||
canary=1 ours=999`) plus the `manifest-hash-mismatch` σ row.
|
||||
- Stored Phase B report (`report.md`) regenerates byte-identical
|
||||
(58 divergences, exit 2 STOP) — no regression on the legitimate
|
||||
canary↔ours comparison.
|
||||
- Self-diff of `snap-001/ours` and `snap-001/canary` continues to
|
||||
return `validate-identical: OK` exit 0 — the optimization still
|
||||
applies to truthful manifests.
|
||||
- Inter-run reproducibility tests (`snap-002a/ours` vs `snap-002b/ours`)
|
||||
also pass `validate-identical`.
|
||||
|
||||
### Issue 2 — MEDIUM: `validation.md` gate 5 documents a procedure that
|
||||
relies on the buggy short-circuit
|
||||
|
||||
The gate-5 procedure as written in `validation.md` (and the claim that
|
||||
it produced `exit 1`) was already inaccurate before this verification.
|
||||
Either the gate was re-stated from memory rather than re-run at
|
||||
landing, or the actual run used a different procedure.
|
||||
|
||||
**Fix.** Updated
|
||||
[`audit-runs/phase-b-state-equivalence/validation.md`](../phase-b-state-equivalence/validation.md)
|
||||
gate-5 entry to (a) keep the verbatim procedure, (b) name *both*
|
||||
divergences the fixed diff tool now surfaces (`manifest-hash-mismatch`
|
||||
σ + the actual mutation), and (c) include a footnote describing the
|
||||
pre-fix bug and pointing at the diff_state.py change.
|
||||
|
||||
### Issue 3 — LOW: `validation.md` gate 2 mis-claims canary's snapshot
|
||||
JSON is sort-keys-sorted
|
||||
|
||||
Canary's `phase_b_snapshot.cc` writes JSON via direct `fmt::format`,
|
||||
emitting keys in **insertion order** — `schema_version, engine, pc, lr,
|
||||
ctr, …`. ours's `phase_b_snapshot.rs` uses `serde_json` which emits
|
||||
keys alphabetically (`cr, ctr, deterministic_skip, engine, …`). The
|
||||
diff tool parses both sides into dicts before comparing, so this has
|
||||
no functional impact on the catalog. It does mean that even
|
||||
semantically-equivalent snapshots produce mismatching SHAs at the file
|
||||
level, so the manifest-hash short-circuit in `diff_state.py` never
|
||||
short-circuits canary↔ours comparisons (the underlying byte content
|
||||
trivially differs even where the parsed semantics match).
|
||||
|
||||
**Fix.** Updated `validation.md` gate-2 entry to describe the actual
|
||||
behavior accurately.
|
||||
|
||||
### Issue 4 — LOW: schema kind count and unwired-list inaccuracies
|
||||
|
||||
`audit-runs/phase-a-diff-harness/README.md` claims "Schema v1 declares
|
||||
11 event kinds" and "wires three" then lists four kinds. Actual count
|
||||
in `schema-v1.md`: **13 sections** with **16 distinct kind strings**
|
||||
(`thread.suspend`/`thread.resume` and `vfs.open`/`vfs.read`/`vfs.close`
|
||||
share their respective sections).
|
||||
|
||||
`ours-changes.md` lists six unwired kind families but omits
|
||||
`thread.suspend`/`thread.resume`. The Rust emitter API has 9 `emit_*`
|
||||
functions, of which 3 are wired (4 if you count the synthetic
|
||||
`schema_version` header) and 6 are stubbed. Five additional kinds
|
||||
have no Rust function yet (`thread.suspend`, `thread.resume`,
|
||||
`mem.write`, `vfs.open`, `vfs.read`, `vfs.close`).
|
||||
|
||||
**Fix.** Updated
|
||||
[`README.md`](../phase-a-diff-harness/README.md) and
|
||||
[`ours-changes.md`](../phase-a-diff-harness/ours-changes.md) to
|
||||
distinguish `wired` / `stubbed` / `not-yet-stubbed` precisely and use
|
||||
accurate counts. Did **not** add any new emitters or hooks (out of
|
||||
scope per session brief).
|
||||
|
||||
## Per-step verification record
|
||||
|
||||
### Step 2 — Combined Phase A + Phase B cvar-OFF determinism
|
||||
|
||||
Ran the current `target/release/xenia-rs` (built from sources containing
|
||||
both Phase A and Phase B) with no Phase A or Phase B cvars set:
|
||||
|
||||
```
|
||||
$ ./target/release/xenia-rs check --stable-digest -n 50000000 \
|
||||
--out audit-runs/phase-ab-verify/digest-current-cvaroff.json \
|
||||
"<ISO>"
|
||||
$ diff audit-runs/phase-a-diff-harness/digest-pre-patch.json \
|
||||
audit-runs/phase-ab-verify/digest-current-cvaroff.json
|
||||
# (no output)
|
||||
```
|
||||
|
||||
**PASS.** Combined Phase A + Phase B cvar-OFF binary digest is
|
||||
byte-identical to the pre-Phase-A baseline.
|
||||
|
||||
Verified by `md5sum` that `target/release/xenia-rs` and
|
||||
`target/release/xenia-rs-phaseB` are byte-identical (current build);
|
||||
`xenia-rs-phaseA-pre` is older (pre-patch baseline).
|
||||
|
||||
### Step 3 — Phase A four gates re-validated
|
||||
|
||||
| Gate | Result | Method |
|
||||
|---|---|---|
|
||||
| 1 cvar-OFF byte-identical (ours) | ✅ | Step 2 above |
|
||||
| 1 cvar-OFF canary smoke marker fires | ✅ | Wine 18-s timed run with `--mute=true`; `AUDIT-DEMO-SETUP-BEGIN` and `AUDIT-DEMO-SETUP-GRAPHICS-OK` both observed in `xenia.log`. CONFIG DUMP shows the 5 expected new cvars (2 Phase A + 3 Phase B), all default empty/false. |
|
||||
| 2 cvar-ON valid JSONL with `schema_version` first line | ✅ | All 121 363 lines of `ours-sanity.jsonl` and 1 635 789 lines of `canary-sanity.jsonl` parse as JSON. Both lead with `{"schema_version":1,…,"kind":"schema_version",…}`. Kind histogram: ours 3:1:1:1 ratio import.call/kernel.call/kernel.return/header (perfect — 40454 each); canary 1:545271:545270:545247 (24 in-flight calls when wineserver killed, expected). |
|
||||
| 3 ≥100-event matching prefix on tid=6→tid=1 | ✅ | Re-ran `diff_events.py` on stored sanity logs; output **byte-identical** to stored `diff-report.md`. 113 matched events on canary tid=6 → ours tid=1; first divergence at idx 113 (KeQuerySystemTime return_value differs — Phase B/C input). |
|
||||
| 4 negative test detects corruption at exact index | ✅ | Took first 100 events of `ours-sanity.jsonl` to `/tmp/ours-short.jsonl`; corrupted line 50 (`tid_event_idx=48`) by changing `kind: import.call` → `kind: kernel.CORRUPT`. Self-diff: exit 0 OK. Corrupt diff: exit 1, `validate-identical: divergence in canary_tid=1 at tid_event_idx=48 (kind: canary='import.call' ours='kernel.CORRUPT')`. |
|
||||
|
||||
### Step 4 — Phase B five gates re-validated
|
||||
|
||||
| Gate | Result | Method |
|
||||
|---|---|---|
|
||||
| 1 cvar-OFF byte-identical (ours) | ✅ | Step 2 above |
|
||||
| 1 cvar-OFF canary CONFIG DUMP shows 5 expected lines | ✅ | Same Wine smoke run; CONFIG DUMP `[Audit]` section includes `phase_a_event_log_path`, `phase_a_event_log_mem_writes`, `phase_b_dump_section_content`, `phase_b_snapshot_and_exit`, `phase_b_snapshot_dir` with default empty/false values. |
|
||||
| 2 well-formed snapshots both engines | ✅ | Both snap-001 dirs contain 6 files; all parse as JSON; manifest SHA-256s match recomputed file hashes; ours's JSON is sort-keys-sorted, canary's is insertion-order (note Issue 3). |
|
||||
| 3 hash-deterministic re-runs | ✅ ours | Two ours runs to different `--phase-b-snapshot-dir`s (`snap-002a` and `snap-002b`): `validate-identical: OK` exit 0. Same-dir re-run (`snap-002c/ours` vs `snap-002c/ours-1`): byte-identical via `diff -r`. |
|
||||
| 3 hash-deterministic re-runs | ✅ canary | New canary snapshot `snap-canary-002/canary` vs existing `snap-001/canary`: `validate-identical: OK` exit 0. Full diff: 4 of 5 files identical, only `config.json` "diverged" with 0 reportable divergences (path/timestamp fields are skipped). |
|
||||
| 4 invariant `pc == entry_point == 0x824ab748` both engines | ✅ | Confirmed by inspecting `snap-001/canary/cpu_state.json` and `snap-001/ours/cpu_state.json` — both `pc: "0x824ab748"`; `config.json::xex_entry_point: "0x824ab748"` in both. |
|
||||
| 4 invariant `image_loaded_sha256` matches | ❌ FAIL → STOP | Reproduced canary `a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c` and ours `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18` across **two independent runs each**. Reproducible STOP condition; this is the documented Phase C handoff, not a Phase B failure. |
|
||||
| 5 negative test detects mutation | ❌ → ✅ post-fix | Pre-fix: false PASS (Issue 1). Post-fix: exit 1, names both the manifest-hash-mismatch σ and the actual mutation γ. |
|
||||
|
||||
### Step 5 — Hook-point semantic equivalence
|
||||
|
||||
**Phase A boundary.** Both engines hook at the kernel-export dispatch
|
||||
boundary (canary: `shim_utils.h::ExportRegistrerHelper::*::Trampoline`;
|
||||
ours: `state.rs::call_export`). Verified by inspecting the first 113
|
||||
matched events on the boot thread:
|
||||
|
||||
- canary tid=6 [0]: `import.call RtlImageXexHeaderField` (ord=299)
|
||||
- ours tid=1 [0]: `import.call RtlImageXexHeaderField` (ord=299)
|
||||
- canary tid=6 [1]: `kernel.call RtlImageXexHeaderField`
|
||||
- ours tid=1 [1]: `kernel.call RtlImageXexHeaderField`
|
||||
- canary tid=6 [2]: `kernel.return RtlImageXexHeaderField`
|
||||
- ours tid=1 [2]: `kernel.return RtlImageXexHeaderField`
|
||||
|
||||
The 113-event matching prefix demonstrates the boundary captures the
|
||||
same kernel-call sequence on the boot thread of each engine through
|
||||
113 calls.
|
||||
|
||||
**Asymmetries.**
|
||||
- canary's debug build emits some kernel calls that complete before
|
||||
shim_utils trampoline (24 in-flight calls when `wineserver -k` kills
|
||||
the process — visible as `kernel.call > kernel.return` count
|
||||
imbalance). ours's `check -n` exit is clean. Not an asymmetry of the
|
||||
hook itself.
|
||||
- ours's `call_export` only emits when an export is `Some(&(name,
|
||||
func))` in the dispatch table; unimplemented exports take the early
|
||||
return path and emit nothing. Canary's trampoline is per-shim; if
|
||||
canary has a shim where ours has no export, only canary will emit a
|
||||
`kernel.call` for it. This is an inherent boundary asymmetry that
|
||||
Phase C should be aware of, but it does NOT invalidate the matching
|
||||
prefix (the first 113 boot-thread calls are all on shared exports).
|
||||
|
||||
**Phase B boundary.** Both engines fire the snapshot hook immediately
|
||||
before the first guest PPC instruction at `entry_point` on the boot
|
||||
thread. PC == `0x824ab748` in both `cpu_state.json` files; `thread_id`
|
||||
records the boot thread (canary 6, ours 1). No "instruction count" /
|
||||
`tbl_tbu` field is captured, but the `pc == entry_pc` invariant is
|
||||
sufficient: had any instructions executed, PC would have advanced.
|
||||
|
||||
**Verdict.** Both Phase A and Phase B hook points are semantically
|
||||
equivalent across engines for the in-scope event types. Asymmetries
|
||||
(unimplemented exports, kernel-call-count off-by-N at process kill)
|
||||
are inherent to the boundaries themselves, not bugs in the harness.
|
||||
|
||||
### Step 6 — Diff-tool robustness (5 synthetic edge cases each)
|
||||
|
||||
#### `diff_events.py`
|
||||
|
||||
| Case | Input | Result |
|
||||
|---|---|---|
|
||||
| empty file | `empty.jsonl` | `SystemExit('empty file')` exit 1, no crash |
|
||||
| single event (header only) | `single-event.jsonl` (just `schema_version`) | Auto-mapping finds no shared first kernel.call → exit 2 with clear message; no crash |
|
||||
| missing schema header | first line is `import.call` | `SystemExit('first event is not schema_version')` exit 1, clear message |
|
||||
| mismatched thread tids | canary has only tid=2; ours has only tid=1, no shared first-call name | exit 2 with clear "no tid mapping" message |
|
||||
| field comparison rules honored | self-diff of `ours-sanity[0:99]` | exit 0; corruption at idx 48 → exit 1 with exact `tid_event_idx=48` named |
|
||||
|
||||
#### `diff_state.py`
|
||||
|
||||
| Case | Input | Result |
|
||||
|---|---|---|
|
||||
| empty snapshot dirs | `ds-empty/canary` and `ds-empty/ours` (no JSON files) | exit 2 STOP (invariants fail because `config.json` missing); 5 missing-file divergences |
|
||||
| self-diff existing snapshot | `snap-001/ours` against itself | `validate-identical: OK` exit 0 (legitimate manifest match still short-circuits correctly) |
|
||||
| missing canary dir | `/tmp/does-not-exist-xyz` as canary | exit 2 with "both snapshot dirs must exist" message |
|
||||
| missing config.json | manifests present (empty) but no JSON files | exit 2 STOP (FileNotFoundError caught in `check_invariants`); 5 missing-file divergences |
|
||||
| field mutation detection | `snap-001/ours` vs `/tmp/verify-gate5` (kernel.json mutated, manifest copied verbatim) | exit 1 (post-fix); names `manifest-hash-mismatch` σ + actual γ-content divergence |
|
||||
|
||||
All synthetic cases handled gracefully; no crashes, exit codes
|
||||
distinguish failure modes (1 = data divergence; 2 = STOP / invalid
|
||||
input).
|
||||
|
||||
### Step 7 — Schema coverage scope
|
||||
|
||||
Schema-v1.md declares **13 sections** (16 distinct kind strings).
|
||||
Phase A wires:
|
||||
|
||||
| status | kinds |
|
||||
|---|---|
|
||||
| wired (call sites in `state.rs::call_export` + canary `shim_utils.h`) | `schema_version`, `import.call`, `kernel.call`, `kernel.return` |
|
||||
| stubbed (Rust `emit_*` exists, no call site) | `thread.create`, `thread.exit`, `handle.create`, `handle.destroy`, `wait.begin`, `wait.end` |
|
||||
| not-yet-stubbed (no Rust function) | `thread.suspend`, `thread.resume`, `mem.write`, `vfs.open`, `vfs.read`, `vfs.close` |
|
||||
|
||||
Documentation updates (Issue 4) clarify which is which. Per session
|
||||
brief, **NOT** wiring any of the unwired kinds — that is Phase A+ /
|
||||
Phase C scope.
|
||||
|
||||
## Confirmed Phase B `image_loaded_sha256` mismatch (handed to Phase C)
|
||||
|
||||
Reproducible across two independent runs of each engine:
|
||||
- canary: `a70993b77ca9e29218d033fad7c0b45c874676c4e0edd966545d39b266486a9c`
|
||||
- ours: `ea8d160e9369328a5b922258a92113efb8d7ce3e1a5c12cc521e375985c91c18`
|
||||
|
||||
`xex_entry_point` = `0x824ab748` and `cpu_state.pc` = `0x824ab748` in
|
||||
**both** engines (these match — the snapshot point is equivalent). The
|
||||
in-memory bytes loaded for the XEX image differ. Per Phase B contract,
|
||||
this is the catalog finding handed to Phase C; verifier did not
|
||||
investigate cause. Phase B's documented next-step (re-run with
|
||||
`--phase-b-dump-section-content`, binary-diff `section_contents[]`)
|
||||
remains the correct Phase C entry point.
|
||||
|
||||
## Files in this directory
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `verification-report.md` | This file. |
|
||||
| `re-validation.md` | Per-gate post-fix re-validation evidence (compact). |
|
||||
| `digest-current-cvaroff.json` | Step 2 digest from current build. |
|
||||
| `regenerated-phase-a-diff-report.md` | `diff_events.py` output on stored sanity logs (byte-identical to stored `diff-report.md`). |
|
||||
| `regenerated-phase-b-report.md` | `diff_state.py` output on stored snap-001 (pre-fix; byte-identical to stored `report.md`). |
|
||||
| `regenerated-phase-b-report-postfix.md` | Same, but generated post-fix (also byte-identical). |
|
||||
| `snap-002a/ours/`, `snap-002b/ours/` | Two independent ours snapshot runs (Phase B gate 3 reproducibility). |
|
||||
| `snap-002c/ours/`, `snap-002c/ours-1/` | Same-dir ours re-run (byte-equality test). |
|
||||
| `snap-canary-002/canary/` | Independent canary snapshot run (Phase B gate 3 reproducibility). |
|
||||
| `coexist/` | Phase A + Phase B cvars enabled simultaneously, ours brief run; jsonl + 5-file snapshot both emitted cleanly. |
|
||||
| `synthetic-diff-tests/` | Fixtures for Step 6 edge-case tests. |
|
||||
|
||||
## Cascade prediction
|
||||
|
||||
- A re-verify gates with reproduction: **achieved** — all gates re-run,
|
||||
reproductions match.
|
||||
- B identify ≥1 instrumentation bug or doc issue: **achieved** —
|
||||
Issue 1 HIGH (diff tool short-circuit), Issues 2–4 documentation.
|
||||
- C fixes land + re-pass all gates: **achieved** — diff_state.py fix +
|
||||
4 doc fixes; all gates pass post-fix; no regressions.
|
||||
- D Phase C base is solid going forward: **achieved**, with the
|
||||
caveat that Issue 3 (canary insertion-order JSON) means inter-engine
|
||||
manifest-hash short-circuit will never fire, but the fall-through
|
||||
full-content-diff path covers this correctly.
|
||||
Reference in New Issue
Block a user