ReadonlycontractReadonlydeprecatedReadonlydeprecatedReadonlyexpiresReadonlyexportReadonlyfileRoot-relative, POSIX-separated -- matches ContractModelContract.file.
ReadonlyretentionReadonlyvariablesOnly variables with at least one lifecycle field set (expiresAt, refreshInstructions, deprecated, removeBy, renamedFrom, retention, authenticatorType, rotationPeriod, lastRotatedAt, rotationTriggerEvents) -- same "only what's relevant" scope renderLifecycleReport() already uses for its rows.
One contract's own lifecycle data plus every variable of its that has at least one lifecycle field set. See LifecycleModelVariable for the per-variable shape.