# Runs the official toml-test compliance suite in both directions, decoder and encoder, against the built adapter; toml-test must be on PATH (go install github.com/toml-lang/toml-test/v2/cmd/toml-test@v2.2.0); not standard because no canonical recipe covers a domain compliance suite.
# Coverage report as an HTML map from the gate's profile; not standard because the gate needs only the numeric floor, and a browser artefact is exploration, not a gate.
# Cross-compile smoke: the library and the command build for the foreign architectures and the browser and edge runtimes; not a gate, it is a nightly convenience and runs std-lib only.
# The release pre-flight from the release skill, in one command: the branch, a clean tree, a sync with origin, the gates, and a CHANGELOG section ready to release. Not a gate, it is the checklist before a release may even be discussed.
release-check version:
#!/usr/bin/env perl
my ($version)= @ARGV;
$version=~ m{\Av?\d+\.\d+\.\d+\z} or die qq{usage: just release-check X.Y.Z\n};
my $branch= qx{git rev-parse --abbrev-ref HEAD};
chomp $branch;
$branch eq q{development} or die qq{release-check: on '$branch', cut releases from development\n};
my $dirty= qx{git status --porcelain};
$dirty eq q{} or die qq{release-check: the working tree is dirty\n};
system(qw{git fetch origin})==0 or die qq{release-check: git fetch failed\n};
my $local= qx{git rev-parse development};
my $remote= qx{git rev-parse origin/development};
$local eq $remote or die qq{release-check: development is out of sync with origin\n};
my $changelog=do{ open(my $fh, q{<}, q{CHANGELOG.md}) or die qq{release-check: cannot read CHANGELOG.md: $!\n};local $/; <$fh> };
$changelog=~ m{## \[development\]\n\n### \w+} or die qq{release-check: the [development] section of CHANGELOG.md is missing or empty\n};
print qq{branch, tree, sync and changelog verified; running the gates\n};
system(qw{just gates})==0 or die qq{release-check: the gates failed\n};
print qq{release-check: ready to release $version\n};
# Compares the toml-test counts the documentation names with the live suite run; not standard, it exists because a corpus change used to be corrected by hand.