Add --dryRun: walks the spec tree and emits output without running anything