From the spec's point of view, all objects live forever. Garbage collection is just an optimization, permitted only because it is undetectable. Even though weak references are generally seen as making GC visible, we can actually specify weak references in a way that preserves the traditional approach: the spec will still assume all objects live forever, and will merely describe when it is permitted to remove certain edges to them.
An object is "relevant" if replacing it with any arbitrary other object could have a visible effect on the future execution of the program.