async def METHOD_NAME(self) -> None:
    while True:
        with suppress_and_log():
            with timeit("IDLE :: TAGS"):
                buf_names, existing = await gather(_ls(), self._misc.paths())
                paths = buf_names | existing.keys()
                mtimes = await _mtimes(paths)
                query_paths = tuple(
                    path
                    for path, mtime in mtimes.items()
                    if mtime > existing.get(path, 0)
                )
                raw = await run(self._exec, *query_paths) if query_paths else ""
                new = parse(mtimes, raw=raw)
                dead = existing.keys() - mtimes.keys()
                await self._misc.reconciliate(dead, new=new)
            async with self._supervisor.idling:
                await self._supervisor.idling.wait()