Skip to content

fix(release-notes-status): count Container image among the CI blocks - #148

Merged
CybotTM merged 1 commit into
mainfrom
feat/retro-container-image-block
Sep 22, 2026
Merged

CybotTM merged 1 commit into
mainfrom
feat/retro-container-image-block

Conversation

@CybotTM

@CybotTM CybotTM commented Sep 22, 2026

Copy link
Copy Markdown
Member

Merging this makes release-notes-status.sh report a destroyed ## Container image block instead of answering ok, and tells the reference what to do once the original body is already gone. Only the checker, its test and one reference paragraph change.

The defect

The CI-block check looked for three sections: Installation, Verify your download and Software Bill of Materials. release-go-app.yml emits a fourth for every run that builds a container — ## Container image, holding the three rolling tags a consumer pulls (the Compose release body step, around line 795). An overhaul that replaces the whole body destroys it, and nothing objected.

Measured on netresearch/ldap-manager v1.7.0: the overhaul dropped ## Container image and ## Verify your download, the check flagged only the second, and the published release named no image at all. The same was true of v1.6.0, destroyed by an earlier overhaul in the same way.

The fix

The list moves into ci_block_sections(), one section per line, and the loop reads it. That is what lets the test assert on the real list rather than a retyped copy — a copy would agree with whatever the check does and stay green when a section is dropped.

Three assertions, each verified by a mutation aimed at it:

Mutation Reddens
remove "Container image" from ci_block_sections Container image is a CI block the check looks for, every orchestrator section is listed
put the literal list back in the loop the loop reads ci_block_sections, not a retyped list

The tree was restored from a copy between mutations, the full suite is green on it (20 of 20), and shellcheck is clean on both files.

The other half, in the reference

references/release-process.md already documents the capture recipe. It only works before the first gh release edit; afterwards the original is gone and the reflex is to copy the block out of the previous release with its version strings rewritten. That release is an output of the same pipeline and usually carries the same damage, so the repair inherits it — and the sibling comparison cannot catch that, because a block missing from every release on the line leaves nothing to compare against. The added paragraph names the orchestrator's Compose release body step as the authority and cites the measured case.

Not touched

The sibling comparison itself, its same-major scoping, body_has, and every other verdict the script computes. The lost reporting path is unchanged — it now simply has a fourth section to find.

Assisted by claude-code:claude-opus-5 — Session

The check that reports a CI-appended block destroyed by an overhaul looked
for three sections: Installation, Verify your download and Software Bill of
Materials. release-go-app.yml emits a fourth, `## Container image`, for
every run that builds one -- the three rolling tags a consumer pulls. It was
never in the list, so an overhaul that replaced the whole body destroyed it
in silence and the script answered `ok`.

Measured on netresearch/ldap-manager v1.7.0: the overhaul dropped both
`## Container image` and `## Verify your download`, the check flagged only
the second, and the release went out naming no image anywhere.

The list moves into ci_block_sections() so the test reads what the check
reads. A retyped copy in the test would agree with whatever the check does
and stay green when a section is dropped; three assertions pin it instead,
each verified by a mutation aimed at it -- removing "Container image" from
the function reddens two, putting the literal list back in the loop reddens
the third, and shellcheck stays clean.

references/release-process.md gains the other half. The capture recipe it
already documents only works BEFORE the first edit; afterwards the reflex is
to copy the block out of the previous release, which is an output of the same
pipeline and usually carries the same damage. The sibling comparison cannot
catch that either: once a block is gone from every release on the line,
nothing is left to compare against. The authority is the workflow that emits
it.

Learning-Id: retro-20260922-ci-block-container-image

Assisted-by: claude-code:claude-opus-5
Agent-Session: https://claude.ai/code/session_013GWpRpyiM13Rh1NMQMBJo5
Agent-Host: 0493f0
Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
Copilot AI lite review requested due to automatic review settings September 22, 2026 06:09
@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 8e222ecb-6efd-4b82-a5b7-5f072d2b9487

📥 Commits

Reviewing files that changed from the base of the PR and between 844b1a7 and f3c75d1.

📒 Files selected for processing (3)
  • skills/github-release/references/release-process.md
  • skills/github-release/scripts/release-notes-status.sh
  • skills/github-release/scripts/tests/release-notes-status.test.sh

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The release process reference now instructs operators to preserve the original release body and reconstruct missing CI-generated sections from the orchestrator workflow. The status script defines a shared list of four CI sections, including Container image, and uses it when checking same-line sibling releases. Tests verify the section list and ensure the check does not use a duplicated literal.

Priority: ⬇️ Low

Change: Bug fix

Merge Risk: 🔵 Low · up to f3c75

Valid binary-only releases may be incorrectly flagged for CI-section restoration when compared with a container-building sibling. Make the check conditional before merging.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change: counting the Container image section in release-notes-status.sh.
Description check ✅ Passed The description directly explains the defect, the implementation, the tests, and the reference update.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
✨ Simplify code
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added documentation Improvements or additions to documentation skill labels Sep 22, 2026
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@CybotTM

CybotTM commented Sep 22, 2026

Copy link
Copy Markdown
Member Author

Self-review: f3c75d1

The bot review this pull request demands is unsatisfiable (Copilot quota wall or repeated bot failures on this head). The diff on this head was reviewed by the PR author; this comment is the on-the-record attestation the merge gate reads back. It stops matching on the next push.

@CybotTM
CybotTM merged commit dcda141 into main Sep 22, 2026
24 of 25 checks passed
@CybotTM
CybotTM deleted the feat/retro-container-image-block branch September 22, 2026 06:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation skill

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants