Currently, for changes in liveness, we publish a liveness update, which is received by topology, then this liveness update is used to update the Link.metadata, which is used by the liveness status hooks to determine the link status + reason. After the metadata is updated, then topology begins a notify link status change, similar to handling an interruption.
What we can do here, is cut out the middleman. Link liveness can instead just use the interruption API to indicate the change in status, and use its own local store of links for the information it uses for the stats hooks. This would reduce the overall dependence on metadata for NApp specific use cases like this.