Dichotomy wave #2479, contract factory-heavy-te-life. Name-preserving
ports of the six audit-missing lifecycle fns into gaps_lifecycle.go with
a 52-row frozen oracle battery (truth_lifecycle.json, hermetic generator,
byte-identical regen) and 49/49 live parity (per-side isolated roots).
Repairs en route: write-denial message now carries Python str(list) bytes
(pyListRepr); ReadFile numbers with the RAW offset (offset=0 renders
'0: line 1' — old clamp rewrote the footer). str(e)-law TypeError
envelopes, present-but-null vs absent args, broker seam for
_find_capability. Sibling-gap arms pinned as notPorted sentinels
(documented divergences, verification/te-life-summary.md).