## Makefile (repo-owned) -- generated by `uvx rhiza-task shim > Makefile`
#
# This replaces `.rhiza/rhiza.mk` and the ten fragments in `.rhiza/make.d/`: 1023 synced
# lines, at a template tag, for six lines pinned to a package version.
#
# `make` stays the front door. It is what a stranger types in an unfamiliar repository,
# what a decade of muscle memory reaches for, and what keeps a consumer pinned to an older
# reusable workflow working unchanged. It just no longer *contains* anything.
#
# RHIZA_TASK is the entire version contract. Bumping it is the migration that used to be
# `/rhiza:update` re-syncing eleven .mk files and reconciling whatever had been shadowed.
RHIZA_TASK ?= rhiza-task@0.1.1

.DEFAULT_GOAL := help

help:
	@uvx $(RHIZA_TASK) list

# `%:` matches any target make cannot otherwise resolve. Two caveats, both survivable: a
# typo is routed here too (the CLI's "unknown task" error is the backstop), and a task
# needing flags wants `uvx rhiza-task <task> --flag` directly. `.PHONY` cannot name unknown
# targets, so a *file* sharing a task's name would shadow it -- none do.
%:
	@uvx $(RHIZA_TASK) $@

# Repo-specific one-offs live here, where they always belonged, and win over the catch-all
# because an explicit rule beats a pattern rule. This is what `local.mk` was for.
-include local.mk

# An included makefile is also a target make tries to *remake* before running anything, and
# with a match-anything rule in scope that attempt is routed to the CLI -- so every single
# invocation used to begin with "unknown task: local.mk". An explicit rule with an empty
# recipe satisfies the remake attempt silently. Needed only for the optional include; the
# Makefile itself is exempt, because make will not use a match-anything rule to remake a
# makefile that already exists.
local.mk: ;
