- rename internal/pdbmux to internal/puppetdb
- fetch facts with one GET /pdb/query/v4/facts AST query per node
- drop the per-node fallback route and its two response shapes
- rename --pdb to --puppetdb, CATALOG_DIFF_PDB to CATALOG_DIFF_PUPPETDB and
pdb_url to puppetdb_url
- describe the fact source generically in the README and AGENTS.md
The capture carried a production certname, real role and class names and
internal paths into a public repo.
- replace hostnames, class names and paths with fake equivalents
- keep the shape under test: catalog envelope, string version, null
code_id, resources with and without parameters and file/line, the
exported and sensitive_parameters cases
- document the range of --retry and --timeout
- walk the classes holding an unresolved reference when tracing any class
it could have named, so a dropped edge cannot lose hosts
- list unresolved references in --explain, in unresolved_references in
--json and on stderr, and flag summary.resolution_incomplete
- name an ordering reference as such in the --explain chain
- unwrap the {"catalog": ...} envelope, still accepting a bare catalog
- report an environment-less response as a protocol mismatch, not an ENC problem
- make Resource.Line a pointer and Resource.Params() map absent onto empty
- render a missing manifest location as "(source unknown)"
- retry compile failures caused by the compiler's PuppetDB query
- stop retrying manifest errors the compiler returns as HTTP 500
- add a trimmed real-server response fixture and tests for each shape
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