Changes for version 0.003 - 2026-11-06

  • DataSchema reads an INI file, such as dist.ini, as a hash of its sections by their whole header. A key that a section repeats is the list of its values, as Dist::Zilla reads it. A file whose name ends in .ini is read so by default, and format: ini says it for any other. So a flavor can refuse a key of a plugin, such as user under [GithubMeta].
  • New check SystemPackages: a repository declares the packages of the operating system that it needs in metamerge.yml. x_system_packages names each dependency, with its package for each packager, a package for a distro or a release of one, and a test that must run once it is installed. x_system_sources holds the third-party archives of deb, each with the full fingerprint of its signing key. The check refuses a name that is not a plain package name, such as a deb name that ends in -, which apt reads as a removal, a source that is not declared, and an archive that nothing installs from. Dist::Conformance::Check::SystemPackages->declared returns the validated declaration of a snapshot or a directory, and ->resolve what one host installs, and which dependencies it cannot resolve. conformance packages prints the packages, tests, sources or needs for the host of /etc/os-release, for a shell script, and exits 2 when a dependency has no package for the host.
  • Dist::Conformance::Schema::refuse dies with the message of validate, for an error that a schema cannot express.

Documentation

Check a repository against its flavor of the standards, and bring it up to date

Modules

Whether the development harness of a repository conforms to its standards, and bringing it up to date
The interface of a check, and what the checks share
CLAUDE.md exists and names the skills that it must
.claude/settings.json enables the plugins of the harness
The perlcritic profile enables or turns off every policy of its template
A JSON, YAML or INI file parses and matches a schema
A distribution has the files that its build needs
The git hooks are tracked, match their templates, and are installed
The system packages that a repository declares in metamerge.yml, validated, and resolved for a host
The configuration files of the tools exist
The CI workflows exist
.conformance.yml, which picks the flavor of a repository and its source
A named set of checks and their configuration, read from a standards source
Parse YAML, JSON and INI, and validate the result against a schema
What a check can read of a repository: its paths, their blob SHAs and their contents
A snapshot of a checkout on this machine, which an update can change
A snapshot from a tree listing and a callback that fetches one file
Where the standards come from: the flavor files and the templates
Standards read from a directory on this machine
Standards fetched from a git repository into a cache directory
What an update changed, or would change, in a checkout, and what it left to a person