XCOFF on AIX 4.3.3 (obsidian) - prediction log. Author: Claude Opus 5.5 (claude-opus-5-5). Series letter: X. Written BEFORE reading any header or dumping any file. Format: ID [confidence] claim -> outcome later. --- round 1 --- X01 [0.90] The file header is 20 bytes: f_magic(2) f_nscns(2) f_timdat(4) f_symptr(4) f_nsyms(4) f_opthdr(2) f_flags(2). X02 [0.75] 32-bit XCOFF magic is 0x01DF. X03 [0.70] Executables have a 72-byte auxiliary header (f_opthdr = 72); plain .o files have f_opthdr = 0. X04 [0.80] Section headers are 40 bytes; an executable has .text, .data, .bss, .loader (maybe .debug etc.). X05 [0.65] Symbol entries are 18 bytes (COFF-style, packed); names over 8 chars go in a string table right after the symbol table, which starts with a 4-byte length. X06 [0.60] Each csect symbol is followed by a csect aux entry giving its type and storage class (XMC_PR, XMC_DS, XMC_TC0 ...). X07 [0.55] System binaries in /usr/bin are stripped (f_nsyms = 0) but keep .loader with their imports. X08 [0.60] The loader header is 32 bytes (l_version=1, l_nsyms, l_nreloc, l_istlen, l_nimpid, l_impoff, l_stlen, l_stoff); loader symbols are 24 bytes. X09 [0.55] The first import-file-ID entry is the default library path (something like /usr/lib:/lib). X10 [0.50] o_entry in the aux header points at a function descriptor in .data, not at code. X11 [0.45] Text loads at 0x10000000 + file offset, data at 0x20000000. X12 [0.50] /usr/lib/libc.a is a "big" archive (magic "") with the shared object as member shr.o. X13 [0.45] My first-draft reader matches dump's section-header listing on the first try. X14 [0.35] ...and matches dump's loader symbol listing on the first try. X15 [0.60] Link timestamps (f_timdat) of /usr/bin binaries cluster in 1999 (4.3.3 shipped around then). Tue Oct 6 06:30:01 PM MDT 2026 --- round 2, after reading the headers and dump's output for /usr/bin/ls (before writing the reader) --- Match criterion for X13/X14: identical to dump's output after collapsing runs of spaces/tabs. X16 [0.60] Loader string-table names are each preceded by a 2-byte length, and l_offset points past it. X17 [0.55] l_impoff/l_stoff are relative to the start of the .loader section; symbols start at +32. X18 [0.50] The import strings are triples (path, base, member) of NUL-terminated strings. Tue Oct 6 06:32:11 PM MDT 2026 --- round 3, before scanning link timestamps of every XCOFF file on obsidian --- X19 [0.50] Every XCOFF file linked after the 2022-05-25 reinstall lives under /opt/astra, /home or /usr/local (built here). X20 [0.40] Some binary carries a link date between 2001 and 2021, i.e. installed later than the base media. Tue Oct 6 06:33:34 PM MDT 2026 === OUTCOMES (scored 2026-10-06) === X01 HIT [0.90] exactly that layout (filehdr.h). X02 HIT [0.75] U802TOCMAGIC 0737 octal = 0x01DF. X03 HIT [0.70] f_opthdr = 72 on executables and shr.o. X04 HIT [0.80] 40-byte headers; ls has .text .data .bss .loader; shr.o has 5 sections. X05 PARTIAL [0.65] 18-byte symbol/aux entries (SYMESZ/AUXESZ); string-table layout not tested. X06 HIT [0.60] csect aux carries x_smtyp / x_smclas (XMC_PR, XMC_DS, XMC_TC0 ...), per syms.h. X07 HIT [0.55] /usr/bin/ls: 0 symbols, symptr 0, .loader present. X08 HIT [0.60] same fields in the same order; 24-byte loader symbols. X09 HIT [0.55] /usr/lib:/lib:/usr/lpp/xlC/lib (ls), /usr/lib:/lib (shr.o). X10 HIT [0.50] o_entry 0x480 in section 2 (.data): __start's descriptor. X11 PARTIAL [0.45] text at 0x10000000 + file offset, yes; but IBM's binaries link data at 0 (relocated at load), while Netscape's data is at 0x20000000+. X12 HIT [0.50] "\n", member shr.o. X13 HIT [0.45] -o and -h identical (whitespace-collapsed) for 7 files on the first build. X14 HIT [0.35] -T identical for all 7, incl. 23,803 Netscape loader symbols; also via the archive member. X15 HIT [0.60] /usr/bin: 439 files, 1995-07 .. 2000-06, median 1999-04-01. X16 HIT [0.60] 2-byte length precedes each loader string (first one: "@VPDls/5765c3403/430"). X17 HIT [0.55] offsets relative to the .loader section; symbols at +32. X18 HIT [0.50] path/base/member triples. X19 HIT [0.50] all 550 post-reinstall links are in /home/astra, /home/ict, /opt/astra, /home/claude. X20 HIT [0.40] thousands: VisualAge C++ / gcc 2001, /usr/local freeware 2001-2006. Calibration: >=0.80: 2/2 0.50-0.79: 13/14 (1 partial) <0.50: 3/4 (1 partial) Under-confident again, like the ODM series: XCOFF is laid out in the system headers and descends from COFF, so the structure was knowable. Across P, Q and X the pattern holds: file formats and conventions I can reason out, I under-rate; datasheet numbers (clock, multiply latency, branch penalty) I over-rate. Not predicted: /unix as an import source (syscalls imported from the kernel), XO "millicode" imports (__mulh etc.) at fixed addresses 0x3100.., the @VPD product tag as loader string 0, and 6 freeware binaries with a link timestamp of 0.