When utilizing the following code via collection 'test' precheck() never executes. If all the methods are specified in pre via default= then the expected behavior is observed.
from invoke import task
@task
def precheck():
print("Preing")
@task(pre=['test.precheck'])
def check():
print("Checking")
@task(default=True, pre=['test.check'])
def run():
print("Defaulting")