chore(release): stamp v0.10.0 - #408
Open
remyluslosius wants to merge 1 commit into
Open
remyluslosius wants to merge 1 commit into
remyluslosius wants to merge 1 commit into
Conversation
Bumps VERSION to 0.10.0 and stamps the accumulated Unreleased section as a dated release. MINOR rather than PATCH because the release is additive across the CLI, the check methods and the corpus. The frozen api/ package changed in comments only, which was checked mechanically rather than by eye: the diff since v0.9.0 has no line that is not a comment, so no signature moved. The per-PR Added/Fixed blocks are consolidated into one block per category, matching how every released section is written. Entry text is copied verbatim. The consolidation was verified lossless by sorting the entry lines on both sides and diffing them. Three defects found while running the gates, each fixed here: - Two merged features shipped with no changelog entry. The four antimalware rules for 800-171 3.14.2, 3.14.4 and 3.14.5, and the measured 800-171 coverage denominator with its derived CMMC Level 2 practice refs. Both are user-visible and would have gone out unannounced. Entries added. - The committed man/kensa.1 had drifted from the binary. It described --config-dir as reading only defaults.yml, which stopped being true when per-host, per-group and conf.d files landed, and it was missing --allow-conflicts entirely. A packaged manual page that documents behavior the binary no longer has is worse than none. Regenerated. - The roundtrip-check and roundtrip-baseline guards never fired. RT_REPORTS joins two wildcards, so with both empty it expands to a single space, and test -n reads a space as non-empty. The guard fell through to a bare python call and its argparse usage error instead of saying to run 'make roundtrip' first. Fixed with strip. README carries the new version. Its Status line no longer says the current version is "released and signed", which is not true of a version until the tag exists; the signing guarantee is stated as a property of every release instead, so the line is accurate before and after the tag. Gates run: go test, golangci-lint, specter sync + coverage-strict (148/148 specs), kensa-validate (779 rules, 0 errors, 1 known W005), catalog-check, comment-lint, docs-check, docs-style, docs-style-sync, mod-tidy-check, manpage-check, proto-check, cli-smoke (225/225), goreleaser check, and a release snapshot producing the documented 11 artifacts. govulncheck reports no called vulnerabilities, and no dependency changed since v0.9.0. Tagging stays with the founder; this commit only prepares the release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prepares v0.10.0. Does not tag it — that stays with the founder.
Version
0.10.0, a MINOR bump. The release is additive across the CLI, the check
methods and the corpus, and nothing was removed from a public surface.
The frozen api/ package changed in comments only. That was checked
mechanically rather than by eye — the diff since v0.9.0 contains no line that
is not a comment, so no signature moved. pkg/kensa gained two framework keys
and lost none.
What is in the release
37 commits since v0.9.0. Highlights: a measured NIST SP 800-171 coverage
denominator with derived CMMC Level 2 practice refs, list-valued rule
variables and a set_compare check method, a not_assessable_exit param so any
check can decline to reach a verdict, six remediation mechanisms classified as
control-channel sensitive, and identity rules gated on how the host resolves
users.
Three defects found while running the gates
Each is fixed in this PR.
Two merged features shipped with no changelog entry. The four antimalware
rules for 800-171 3.14.2, 3.14.4 and 3.14.5 (#374), and the measured 800-171
denominator with the derived CMMC Level 2 refs (#401). Both are user-visible
and would have gone out unannounced. Entries added.
The committed man/kensa.1 had drifted from the binary. It described
--config-dir as reading only defaults.yml, which stopped being true when
per-host, per-group and conf.d files landed, and it omitted --allow-conflicts
entirely. It also still carried two banned plan labels in that stale text. A
packaged manual page describing behavior the binary no longer has is worse
than no manual page. Regenerated; make manpage-check now passes.
The roundtrip-check and roundtrip-baseline guards never fired. RT_REPORTS
joins two wildcards, so with both empty it expands to a single space, and
test -n reads a space as non-empty. The guard fell through to a bare python
call and its argparse usage error. Fixed with strip, so both targets now print
the intended message.
Changelog consolidation
The Unreleased section had accumulated one Added/Fixed block per PR, about 35
headings. Released sections carry one heading per category, so the blocks were
merged into Added / Changed / Removed / Fixed. Entry text is copied verbatim,
and the merge was verified lossless by sorting the entry lines on both sides
and diffing them.
Gates
All green on this branch:
go test, golangci-lint (v2.12.2, 0 issues), specter sync + spec-coverage-strict
(148/148 specs), kensa-validate (779 rules, 0 errors, 1 known W005),
catalog-check, comment-lint, docs-check, docs-style, docs-style-sync,
mod-tidy-check, manpage-check, proto-check, cli-smoke (225/225 passed),
goreleaser check, and a release snapshot producing the documented 11 artifacts.
Security check
the code does not reach.
this release adds no supply-chain surface.
pre-commit job still runs detect-secrets v1.5.0 against .secrets.baseline;
the removal was deduplication. The exclusions are narrow and reasoned.
set_compare does the comparison in Go and only the observing command, which
is authored in the rule YAML, runs on the host. No list variable is
interpolated into a command or run field anywhere in the corpus.
Two things the founder should decide before tagging
The guide still stamps v0.9.0. Every docs/guide chapter carries an
"Applies to: Kensa v0.9.0" line. docs-check does not gate those, so nothing
here fails, and I deliberately did not bump them. The stamp asserts the
chapter was verified command-by-command against the binary and the fleet, and
I did not do that verification. Re-stamping without it would turn a real claim
into a false one.
Tier 2 live validation has not run for this release. make roundtrip needs
a disposable host (RT_HOST), and it remediates and rolls back real state, so I
did not run it against the fleet without being asked. Everything above is
offline-green plus a container-free static pass, which the project's own
definition of done treats as necessary and not sufficient for anything that
writes to disk.
Unrelated, noted not changed
The shipped CLI help embeds a real fleet address and admin account
(192.168.1.211, owadmin) in about a dozen examples across cmd/kensa/main.go
and cmd/kensa-fuzz/main.go. It predates this range, so it is not a regression
and I left it alone. It is worth a follow-up: those examples ship to customers
in the binary and the manual page, and a documentation placeholder would carry
the same meaning without publishing internal topology.