- strip # comments with quote-state tracking so a hash in a string no
longer truncates the line
- skip heredoc bodies in every @(EOT) form so documentation text is not
indexed as a class reference
- take every literal name out of a selector, following a bare variable
through the assignments in its own file
- record a class reference that stays unresolved against its file, with
any literal prefix, instead of dropping it
- read a class name case insensitively in a title or type reference
- tag each edge as a declaration or an ordering reference
A hieradata file for a role with no members produces an empty host list, which
is indistinguishable from a mapping failure.
- list files that mapped cleanly but selected nobody in --explain
A params.pp is only ever reached by inherits and $class::var, so changing one
resolved to no hosts at all.
- index inherits, $class::var reads and create_resources()
- match a defined type declared part-way along a line
Work out which hosts a puppet-prod change can affect, so a catalog test can
fan out over exactly those hosts instead of the whole estate.
- add cmd/catalog-impact and internal/impact
- map hieradata paths onto fact selectors from the hiera hierarchy
- trace manifest classes back to role classes through include, contain,
class {} and hiera_include, to a fixed point
- fetch the estate fact table from pdbmux in one query via FactsByName
- widen to all hosts, loudly, for any path that matches no rule
- ship the binary and its completions in the RPM
Compile a host's catalog in a base and a test environment over the
puppetserver API, then diff the two.
- add catalog-diff CLI with cobra flags, config precedence and exit codes
- add puppetserver mTLS client for POST /puppet/v4/catalog
- add pdbmux fact client
- add catalog normalisation, diff engine and text/JSON renderers
- add Makefile, nfpm RPM packaging and woodpecker pipelines