2026-08-31 (context axis + link-map) - a third provenance axis, and where module introspection dies in payload mode
Added OBS|context|<delivery>/<generation>
next to OBS|build (D275): the measured environment a run
happened in, orthogonal to OBS_FROM_*. It exists because
the same payload binary reports different things in the
ps4-compat host vs an injected native process and build
cannot tell them apart. Generation is read by walking the runtime
linker's link-map (obs_linkmap_walk, runtime.c, FreeBSD
<link.h> offsets, syscall-free), which also backs the
new 111-modlink section that dumps the full inventory - the
answer 110-modules cannot give because
sceKernelGetModuleInfo is refused (0x80020016
for every size, 0x160 included). Surprise: on the
36,361-record payload run the link-map walk returned nothing -
context read payload/unknown-gpu. It shares
the own-ELF-header find with the ELF-scan resolver, so it fails exactly
when imports do (this build's unbound-imports payload mode). Added a
reason out-param so the next run says which stage
(own ELF header not resident = same cause as unbound
imports; DT_DEBUG not populated = a loader that never
processed this object). Confirms the strategic read: payload mode denies
both symbol resolution and link-map introspection; the native-host
injector is where both come back, and context will read
payload/ps5-native when it does.
make host/make module green; no new imports.
NB make check currently blocks on an unrelated
self_header.gen.h drift from a concurrent
selfheader.rs edit - not this change.