myasnikovdaniil a6cb84673e docs(release): check changelog claims against the code (#4936)
## What this PR does

Changelog generator sees only `docs/agents/changelog.md`, two inline
prompts and `AGENTS.md`. Failure modes and pre-publish checks live in
`docs/release.md`, which it never reads. The prompt has detailed rules
for authors and PR numbers and none for checking a claim against the
code. I reviewed the generated v1.7.0 draft against the code and found
22 statements wrong or missing, while all authors and PR references were
right. Several were in breaking changes: a talm fix credited to a talm
release that doesn't contain it, worker pools said to be adopted without
churn while Talos workers are rolled once because of the hash-named
TalosConfigTemplate (#3523), migrations said to run on a variant that
has them disabled.

Three changes:

- `docs/agents/changelog.md`: new section 8b about verifying claims
against the code. Identifiers, migration behaviour and variant scope
come from the tree at the upper-bound tag, required actions come from
release notes and newly added upgrade sections, not only from `!`
commits. Section 9 now asks to run the `docs/release.md` checks and
`hack/validate-changelog.sh` on the written file before exit.
- `.github/workflows/changelog-generate.yaml`: refresh `docs/release.md`
and `hack/validate-changelog.sh` from the dispatch ref, next to the
existing `changelog.md` refresh. Job checks out the rc tag detached, so
without this generator runs older copies from that tag. Permissions,
tokens and tool flags are unchanged.
- `hack/validate-changelog.sh`: reject an entry cut off with an ellipsis
right before its attribution, and any link to `cozystack.io/docs/next/`
(live site answers 404). Reason names the offending lines in one line,
because workflows quote it into a single annotation.

How I checked it:

- Old validator accepts the original v1.7.0 draft, new one rejects it on
three truncated entries (lines 335, 393, 518) and, after those are
repaired, on the `/docs/next/` link (line 25). All 29 shipped changelogs
from v1.3.0 to v1.6.4 still pass.
- New contract test plants each defect into a shipped changelog, checks
the reason names the line, and checks that near misses real changelogs
carry still pass (`content/en/docs/next/` in prose, ellipsis inside a
sentence, three dots of a compare link). It goes red on the old
validator and on widened patterns.
- Overlay test pins both new copies and the cone-mode sparse checkout
that brings `docs/release.md` in. It goes red if either copy is removed,
cone mode is turned off or `docs/agents` is dropped from sparse paths.
- I ran every command the new prompt rules prescribe on
v1.6.0..v1.7.0-rc.1, each one finds an error the draft shipped.
- `make bats-unit-tests bats-posix-compat-tests` pass (2424 and 1120),
zizmor and actionlint are clean on the workflow.

Not included: a script that gives the generator component versions and
migration headers, and a networked check for references, authors, link
liveness and companion-release containment. Both are separate changes.
Things I noticed and left alone:

- validator summary in the Phase 2 section of `docs/release.md` doesn't
list the two new rejections
- `docs/agents/changelog.md` runs
`docs/changelogs/hack/check-optional-repos.sh`, but the script lives at
`hack/check-optional-repos.sh` and still resolves repo root from the old
location
- a changelog the validator rejects is still not uploaded as an
artifact, so rejection costs a regeneration or a hand-commit, that is
why section 9 has the generator run the validator first
- current v1.7.0 draft still has the three truncated entries, a
promotion that picks it up will discard it and generate a new one unless
the entries are rewritten
- three unrelated bats tests (in `check-gpu-recording-rules.bats` and
`promote-rewrite-tags_test.bats`) fail under en_US.UTF-8 collation on
main too, they pass under C.UTF-8 that runners use, I ran the suite that
way

### Screenshots

Not applicable, there is no UI change.

### Downstream repositories

- [x] No downstream repository is affected by this change
- [ ] [cozystack/website](https://github.com/cozystack/website) -
follow-up:
- [ ]
[cozystack/terraform-provider-cozystack](https://github.com/cozystack/terraform-provider-cozystack)
- follow-up:
- [ ]
[cozystack/ansible-cozystack](https://github.com/cozystack/ansible-cozystack)
- follow-up:
- [ ] [cozystack/ccp](https://github.com/cozystack/ccp) - follow-up:
- [ ] [cozystack/talm](https://github.com/cozystack/talm) - follow-up:
- [ ] [cozystack/cozyhr](https://github.com/cozystack/cozyhr) -
follow-up:
- [ ] [cozystack/cozy-proxy](https://github.com/cozystack/cozy-proxy) -
follow-up:
- [ ]
[cozystack/cozystack-telemetry-server](https://github.com/cozystack/cozystack-telemetry-server)
- follow-up:
- [ ]
[cozystack/external-apps-example](https://github.com/cozystack/external-apps-example)
- follow-up:
- [ ] [cozystack/examples](https://github.com/cozystack/examples) -
follow-up:
- [ ] [cozystack/community](https://github.com/cozystack/community) -
follow-up:

I walked the trigger map in `docs/agents/contributing.md` against each
changed file:

- `docs/agents/changelog.md` is the changelog prompt, not the commit
convention or the PR template that ccp and community restate. Its list
of release-window repositories is unchanged.
- `.github/workflows/changelog-generate.yaml` is not `tags.yaml`, the
release-prep workflow ccp relies on.
- `hack/validate-changelog.sh` is changed in place, not moved or
renamed, and it is not `hack/package.mk` or `hack/update-crd.sh`.
- `hack/release-changelog-contract.bats` is a test.

No package, values key, CRD, release asset, make target or node
prerequisite changes. Code search across the organization finds no
reference to any of these files outside this repository.

### Release note

```release-note
docs(release): check changelog claims against the code. The changelog generator now verifies operator-facing statements against the code and runs the release checks on its own output, and the changelog validator rejects entries cut off with an ellipsis and links to cozystack.io/docs/next/.
```


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Documentation**
* Release guidance now emphasizes verifying operator-facing claims
against the release version and carrying required actions into upgrade
instructions.
* Documentation links in changelogs should point to versioned
documentation.

* **Chores**
* Changelog validation now flags truncated entries and links to
unversioned “next” documentation.
* Release guidance and validation checks are refreshed automatically
during changelog generation.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-21 13:56:15 +05:00
2025-10-08 09:43:34 +05:00
2024-02-08 12:04:32 +01:00

Cozystack Cozystack

GitHub Release Apache-2.0 License Commit activity OpenSSF Best Practices OpenSSF Scorecard CLOMonitor Support

Cozystack

Cozystack is a free and open-source platform and framework for building clouds.

Cozystack is a CNCF Sandbox project that was originally built and sponsored by Ænix.

With Cozystack, you can transform a bunch of servers into an intelligent system with a simple REST API for spawning Kubernetes clusters, Database-as-a-Service, virtual machines, load balancers, HTTP caching services, and other services with ease.

Use Cozystack to build your own cloud or provide a cost-effective development environment.

Cozystack user interface

Use-Cases

Documentation

The documentation is located on the cozystack.io website.

Read the Getting Started section for a quick start.

If you encounter any difficulties, start with the troubleshooting guide and work your way through the process that we've outlined.

Versioning

Versioning adheres to the Semantic Versioning principles.
A full list of the available releases is available in the GitHub repository's Release section.

Contributions

Contributions are highly appreciated and very welcomed!

In case of bugs, please check if the issue has already been opened by checking the GitHub Issues section. If it isn't, you can open a new one. A detailed report will help us replicate it, assess it, and work on a fix.

You are welcome to take on the fix yourself. Commits are used to generate the changelog, and their author will be referenced in it.

If you have a concrete feature request, open an issue. For a cross-cutting or architectural change, open a design proposal in the community repo. For questions or early ideas, use GitHub Discussions. See CONTRIBUTING.md for the full routing.

Community

You are welcome to join us in #cozystack, on either CNCF Slack (get an invite) or Kubernetes Slack (get an invite), in our Telegram group, and at our community meetings. Add them to your Google Calendar or iCal for convenience.

Project documents

Document What it covers
Governance How decisions are made and who makes them
Contributor Ladder How to grow from contributor to maintainer
Maintainers Who maintains the project
Code of Conduct What we expect of each other
Security Policy Reporting a vulnerability, and which releases get fixes
Adopters Who runs Cozystack in production
Roadmap Where the project is going

License

Cozystack is licensed under Apache 2.0.
The code is provided as-is with no warranties.

Commercial Support

A list of companies providing commercial support for this project can be found on official site.

Languages
Go 46.8%
Shell 37.7%
TypeScript 7.1%
Go Template 5.5%
Makefile 1.5%
Other 1.2%