True when the layer declares a pull source (offline.source.url).
The persisted marker, or undefined when no pull ever happened.
Expiry declared by the layer, or undefined.
Reference instant, injected to stay testable at a frozen clock.
The status, never guessed.
Decides ONE layer's status from its declaration and its marker.
The test order is the reading order, and it is not commutative:
notDeclaredtrumps everything (an undeclared layer has no offline state to report), then the absent marker, then the failure, then the unfinished run, and staleness only comes last — on a pull that succeeded AND finished.