# Phase 0.9E-R2 SIECAF structural analysis Date: 2026-07-19 Result: all pairwise comparisons are `SIECAF_LAYOUT_DIFFERENT`. ## Evidence and scope `tools/inspect_siecaf_header.py` is a host-only read-only parser. Its fixed little-endian layouts are bound to: - PS5 DevWiki `Archive.dat` structure documentation; - `c0w-ar/ps5-bar-tool` commit `36d014672bc87577a6e0d750c2cccadc3fae0854`, tree `d3e973b60432fdc32bd16e3b7424e82dcc38a23f`; - public `include/bar_file.h` blob `fdbc368353a7797464873ada306f0297257eb95e`. The public header names the 64-bit value after the magic `unknown`, and the later signed 32-bit field `version`. Versions 3 and 6 were observed and are parsed using that same public fixed-width layout. Other versions fail closed. The parser reads only the 0x58-byte header, 0x40-byte metadata records, and 0x30-byte hash records. It never decrypts, guesses keys, extracts content, executes `ps5-bar-tool`, writes output files, or opens a network connection. The 16-byte header field named `key` by the public source and the complete raw header are not emitted; only their SHA-256 fingerprints are recorded. This preserves exact structural comparison without committing cryptographic header material. It checks exact magic, table arithmetic with uint64 overflow guards, table and declared-data bounds, 64 KiB alignment, coherent aligned/unaligned sizes, metadata `(section_id, part_number)` identity, hash-table index coverage, duplicates, overlaps, gaps, and trailing data. Repeated section IDs with different part numbers are reported but are valid multipart records. ## Header comparison | Field | Local | Official Y2JB 1.6 4.03 | owendswang v1.4 autoloader 7.61 | |---|---:|---:|---:| | inner size | 504365056 | 504496128 | 504627200 | | version | 3 | 3 | 6 | | segment count | 62 | 64 | 58 | | data offset | 65536 | 65536 | 65536 | | declared data size | 504299520 | 504430592 | 504561664 | | header SHA-256 | `4454809c9831770901491368f08b648129aef7ee3148aff17df8716ff3a5cd76` | `1af2bd937e5b6a2386331893f7ea1295661858cb91c90ee728141a4fec2dbf9b` | `db2a9677f051b372e208261d767ac45f653374426a5594ce3306568138ebd3ae` | All three parse as `SIECAF_VALID_STRUCTURE`. None has gaps, overlaps, trailing data, duplicate metadata composite keys, or duplicate hash-table IDs. ## Normalized fingerprints | Object | Segment table SHA-256 | Hash blocks SHA-256 | Layout SHA-256 | Structural SHA-256 | |---|---|---|---|---| | local | `ee35a92fe5e46c307310715fc5bd0edb9ac46c2046b7d77e9c1c437446e399ea` | `6e052f186dc8e683d501e376d79dcec1ba0d3268c257b6071e96eae738a7be24` | `c6dac8313ef99accba68b4a36871f0d8ae99676df0b721d4447ecb05a12a6539` | `7bb1b70187d1f48370b9bae218429af79105585bd043307824c0d84982e6922f` | | official | `d31def8e731d7bba0eaf23177f7c7245ef17f5d37ade53c9ca18744154bc8e25` | `c3236f5d85a4d7741be5a1fda5ce96d2bb7f005b0e48fed043af5ea48fb045d2` | `de6cc47686e5e301b725267b9b777c80a07a788e51f214cfb6e9d7f6e2e11110` | `9c453e1fa99ef1f1e6fe1d992f9b0a2ede4dbd4b9a2ad8551c08c8c61ed9be2a` | | community | `f0aed4ae115866010902671a511983c3e6e21d1a7ab187bae7f36566979beb89` | `434b209865af8c5815b1277073db59348fddf65086908b2fd00dee5324459bcb` | `be7fdf87361c17fa52d3b4b263f4ee0cce69e924f8dab0ab66c554b4d9557549` | `4884c54e280969371ae1d0b84533be5a7c50a61dff6931cf595fdb5862655218` | Pairwise outcomes: - local versus official: `SIECAF_LAYOUT_DIFFERENT`; - local versus community: `SIECAF_LAYOUT_DIFFERENT`; - official versus community: `SIECAF_LAYOUT_DIFFERENT`. `manifests/runtime/phase-0.9e-r2-siecaf-fingerprints.json` contains every non-secret normalized input field, metadata record, section hash, redacted header-field hashes, parser warning/error array, and comparison. Structural hashes are non-authorizing fingerprints: even `SIECAF_STRUCTURAL_EXACT` would not prove decrypted-content identity or deployment. Here, not even normalized layout equality exists.