Basically trpc.ts requires example.ts to build the appRouter but example.ts requires trpc.ts to build the exampleRouter. They can't both be created before the other is created, so one of them wins and the other fails. publicProcedure is undefined when exampleRouter tries to use it as a result