Repository navigation
Add release-note agent and skill; add v0.10 release note draft - #414
Conversation
…raft Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
|
The created documentation from the pull request is available at: docu-html |
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
There was a problem hiding this comment.
🟡 Changes recommended
Release evidence can omit relevant releases or mix snapshots, and legacy module keys produce incorrect comparisons.
3 open issues
What changed in this PR
Adds tooling and authoring guidance for S-CORE platform release notes, alongside the v0.10 draft.
Changes:
- Generates release-note structure, module tables, and image links.
- Collects change evidence and defines the authoring workflow.
- Adds the v0.10 draft and explicitly orders the release index.
| File | Description |
|---|---|
scripts/release_note/generate_release_note.py |
Generates release-note structure and module comparisons. |
scripts/release_note/collect_changes.py |
Collects PRs, module release notes, and integration-impact evidence. |
docs/s_core_v_1/releases/releases.rst |
Orders release notes explicitly. |
docs/s_core_v_1/releases/release_note_score_v0_10.rst |
Adds the v0.10 draft and migration guidance. |
.github/skills/release-note/SKILL.md |
Defines format, evidence criteria, and validation. |
.github/prompts/release-note.prompt.md |
Provides the draft/final authoring entry point. |
.github/agents/release-note.agent.md |
Coordinates generation and narrative authoring. |
Review effort: Balanced
…t, one ref for all evidence, alias normalisation) Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
…e from this PR Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
| prs = collect_prs_by_commits(slug, base, head) if own_repo else collect_prs(slug, base, head) | ||
| relevant = prs if own_repo else [p for p in prs if not p.is_noise] | ||
| out = [ | ||
| f"## {name}: {base} -> {head} ({slug}, {len(prs)} merged PRs, {len(prs) - len(relevant)} bot/dependency PRs omitted)", | ||
| "", | ||
| ] |
There was a problem hiding this comment.
From my understanding that summarizes everything that happened on main branch via merging PRs. Release candidate branch gets direct commits.
Is it not a usecase? We use it only to generate initial notes and all other updates need to be manual or?
There was a problem hiding this comment.
Good catch. The collector does not look at main. It compares the origin tag with the HEAD of the checked-out release candidate branch. But it only picked up squash-merged PRs ((#N) suffix), so commits pushed directly to the RC branch were silently dropped. Fixed in 7f1fbf7: collect_changes.py now has a "commits without PR" section listing those commits with their changed files. Commits that only touch the release notes are skipped. The skill tells the agent to classify them like PRs.
On the use case: it is not only for the initial note. Re-running the prompt on the RC branch refreshes the generated parts (tables, images, architecture diagram) and re-collects the evidence. New items (new PRs or direct commits) are added, and the reviewed narrative is kept. So later updates don't have to be manual.
The generator renders docs/s_core_v_1/releases/_assets/architecture_vX_Y.svg from scratch (scripts/release_note/architecture_diagram.py) and embeds it in the Overview: platform/infrastructure/tooling modules, the integrated software modules with their components (Sphinx-Needs comp/mod from needs.json, --needs) and the target images. Same inputs give a byte-identical SVG. Skill and agent document the diagram as a generated part.
The generator builds //:needs_json_file with Bazel and reads bazel-bin/needs.json, so the components match the module pins of the checked-out release branch instead of the published main docs. A failing build stops the run; --needs only reproduces a diagram from a kept file. Removes the unused diagram path without components.
The evidence of this repository covers the range origin tag -> checked-out
release branch, but only squash-merged PRs ("(#N)") were listed, so commits
pushed directly to the release candidate branch were dropped. collect_changes.py
now lists them with their changed files (commits that only touch the release
notes are skipped). The skill classifies them like PRs and, on refresh, adds
items for new evidence while keeping the reviewed narrative.
* Add release-note agent, skill and generator; add v0.10 release note draft
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Format release-note scripts with ruff
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Remove session-specific details from release-note skill and agent
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: list removed files as evidence, correct v0.10 content
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: take the release date from the S-CORE milestone
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: show draft or final state on top of the note
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: set the final state explicitly with --final
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Add release-note prompt with draft/final parameter
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: address review findings (release selection by tag commit, one ref for all evidence, alias normalisation)
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: run on the release candidate branch; drop the v0.10 note from this PR
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
* Release note: generate an architecture diagram with every skeleton run
The generator renders docs/s_core_v_1/releases/_assets/architecture_vX_Y.svg
from scratch (scripts/release_note/architecture_diagram.py) and embeds it in
the Overview: platform/infrastructure/tooling modules, the integrated software
modules with their components (Sphinx-Needs comp/mod from needs.json, --needs)
and the target images. Same inputs give a byte-identical SVG.
Skill and agent document the diagram as a generated part.
* Release note: take the diagram components from the checkout's needs.json
The generator builds //:needs_json_file with Bazel and reads bazel-bin/needs.json,
so the components match the module pins of the checked-out release branch instead
of the published main docs. A failing build stops the run; --needs only reproduces
a diagram from a kept file. Removes the unused diagram path without components.
* Release note: list commits without PR of the release branch as evidence
The evidence of this repository covers the range origin tag -> checked-out
release branch, but only squash-merged PRs ("(#N)") were listed, so commits
pushed directly to the release candidate branch were dropped. collect_changes.py
now lists them with their changed files (commits that only touch the release
notes are skipped). The skill classifies them like PRs and, on refresh, adds
items for new evidence while keeping the reviewed narrative.
---------
Signed-off-by: Anton Krivoborodov <anton.krivoborodov@bmw.de>
(cherry picked from commit 9f60b91)

Adds an agent, a skill and two scripts that generate the S-CORE platform release note, and the v0.10 release note as a draft.
What changes
scripts/release_note/generate_release_note.py: generates header, Reference Integration scope, module tables (fromknown_good.json, with links to the pinned tag/commit, release notes and module verification reports) and the image table. Chapter headings carry icons.scripts/release_note/collect_changes.py: collects the evidence for "Changes to the Platform" (merged PRs of this repository, breaking/new-feature sections of the modules' own release notes, impact hints in this repository)..github/skills/release-note/SKILL.md: document format, criteria for new features and breaking changes (platform level only), run-from-scratch procedure..github/agents/release-note.agent.md: orchestrates the run.docs/s_core_v_1/releases/release_note_score_v0_10.rst: v0.10 release note,draft, planned for 2026-11-02.docs/s_core_v_1/releases/releases.rst: explicit toctree order (a glob sorted v0_10 before v0_5).Notes for review
<sha7> (unreleased)without a release-notes link. They need release pins before the release.collect_changes.py; please check it for the v0.10 release.