The device SIGSEGV and the add-ons feature turn out to be the same missing
piece. Instrumented the daemon's init and localized the crash in one device
round-trip:
init: XRE_NotifyProfile (DoStartup: prefs + addons + profile-after-change)
Segmentation fault EXIT=139
With JIHAD_NO_PROFILE_NOTIFY=1 it reaches "engine up; serving YAP" and binds its
socket. So the crash is inside DoStartup, and the cause is that the daemon
embeds via XRE_InitEmbedding2 with no application.ini and therefore registers no
nsIXULAppInfo at all. AddonManager.jsm:778 does setCharPref(..., appinfo.version)
on a value that does not exist -> NS_ERROR_ILLEGAL_VALUE, and the daemon dies in
the same window. Registering a real app identity is both the crash fix and the
prerequisite for every part of the add-on stack.
New cavekit-addons-extensions.md (6 requirements) + build-site Tier 10
(T-062..T-066). Verified while drafting that nothing needs adding to the engine
build: nsAboutRedirector already maps about:addons, and the manager UI, the XPI
installer UI, locale, skin and AddonManager modules all already ship in the
device bundle. Scope recorded honestly: UXP is a Firefox-52-era fork, so this is
the CLASSIC XPI stack, not WebExtensions; and about:addons is a XUL document,
which collides with this project's recorded XUL input hazard -- called out as
part of R2 rather than left to be discovered on hardware.
Also fixes the record: the addons.manager error is NOT pre-existing noise as I
first triaged it. XRE_NotifyProfile is new in 8953eab, so the 2026-07-27 binary
could not have emitted it -- it is a symptom of the crashing window.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JDvWTswwcSHQHVA1gD795L