Skip to content

chore: address review followups from #2509 and #2553 - #2577

Closed
myasnikovdaniil wants to merge 6 commits into
mainfrom
chore/followups-from-prs
Closed

myasnikovdaniil wants to merge 6 commits into
mainfrom
chore/followups-from-prs

Conversation

@myasnikovdaniil

@myasnikovdaniil myasnikovdaniil commented May 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Address inline review followups left from #2509 (HelmRelease knobs) and #2553 (cozyreport).

Operator (#2509 followup):

  • cmd/cozystack-operator/main.go: extend parsePositiveDuration with a min parameter and pass helmReleaseMinDuration (15s) at every HR-flag call site, so --helmrelease-install-timeout=1ms (and similar) fail fast at startup instead of producing a HelmRelease that thrashes the controller. Tests cover at-min, above-min, and below-min (including sub-second).

cozyreport (#2553 followups):

  • hack/cozyreport.sh: consistent variable quoting across all loops; one-line comment at the top documenting the deliberate absence of set -e (best-effort diagnostic collection — a single failed kubectl must not abort the rest of the report).
  • hack/cozyreport-summary.sh: enable set -o pipefail so failed kubectl calls in kubectl ... | awk ... chains surface as missing sections instead of silently-empty ones. Switched shebang to /bin/bash because the e2e-sandbox image's /bin/sh (Ubuntu dash, both 22.04 and 24.04) does not implement pipefail; bash is already installed in the image.
  • hack/cozyreport-summary.sh: surface container-state OOMKilled (via lastState.terminated.reason) using a go-template — catches cgroup-only kills that exit 137 without escalating to a node-level OOMKilling event.

Test plan

  • go test ./cmd/cozystack-operator/... passes (TestParsePositiveDuration covers at-min, above-min, below-min, sub-second)
  • Run an operator with --helmrelease-install-timeout=1ms and confirm it exits at startup with must be >= 15s
  • bash -n hack/cozyreport-summary.sh and sh -n hack/cozyreport.sh syntax-clean
  • Run hack/cozyreport.sh against an e2e cluster; confirm summary.txt contains the new ## Containers with OOMKilled lastState section
  • Simulate a failed kubectl in a pipeline (e.g., a missing CRD) and confirm summary.txt is truncated at the failure instead of producing a complete-but-empty section

Summary by CodeRabbit

  • Tests

    • Extended duration parsing tests to validate minimum-bound constraints.
  • Chores

    • Enhanced reporting scripts with improved error handling and reliability.
    • Added detailed OOMKilled container state reporting in diagnostics.
    • Integrated Talos log collection support.

time.ParseDuration accepts "1ms" as a valid positive value, but Flux
HelmRelease fields below ~15s thrash the controller without usefully
changing behaviour. Add a min-duration parameter to parsePositiveDuration
and pass helmReleaseMinDuration (15s) at every HR-flag call site so a
misconfigured flag fails fast at startup rather than producing a HR that
never reconciles cleanly.

Signed-off-by: Myasnikov Daniil <[email protected]>
Kubernetes resource names are DNS-label-validated and so cannot contain
spaces in practice, but consistent quoting hardens the script against
future changes that pipe in less-trusted strings (event message bodies,
custom labels) and makes the intent unambiguous to readers.

Signed-off-by: Myasnikov Daniil <[email protected]>
cozyreport.sh is best-effort diagnostic collection: a single failed
kubectl (missing CRD, RBAC denial, transient timeout) must not abort
the rest of the report. Make that explicit at the top of the script so
the next maintainer does not "fix" it by adding set -e and silently
shrinking the diagnostic surface for E2E debugging.

Signed-off-by: Myasnikov Daniil <[email protected]>
Pipelines like `kubectl get hr -A | awk ...` swallow the kubectl exit
code without pipefail, so a failed kubectl call would silently produce
an empty section in summary.txt rather than a visible error. The call
site already wraps this script in `|| true`, so a hard pipeline failure
still produces a (truncated) summary, but it now surfaces as missing
sections instead of empty ones. Guard with `2>/dev/null || true` since
POSIX sh does not require `set -o pipefail`.

Signed-off-by: Myasnikov Daniil <[email protected]>
The existing `kubectl get events --field-selector reason=OOMKilling`
section only catches kernel-OOM events emitted by kubelet at the node
level. Container-level cgroup kills that exit 137 without escalating to
a node OOMKilling event (no kernel memory-pressure broadcast) are
invisible there but visible in the pod's containerStatuses.lastState.

Add a "Containers with OOMKilled lastState" section that scans every
container and initContainer for a terminated.reason=="OOMKilled". Use
go-template instead of jsonpath because jsonpath's inner `{range}`
cannot reach the parent pod's metadata, while go-template's `$pod :=`
captures the outer scope.

Signed-off-by: Myasnikov Daniil <[email protected]>
…pefail

Verified that the e2e-sandbox image's /bin/sh is Ubuntu's dash
(0.5.11 on 22.04, 0.5.12 on 24.04) and neither build implements
`set -o pipefail`. Rather than guarding the option with `|| true`
(which silently drops the very behaviour we want) or rebasing the
sandbox onto a different /bin/sh (high-cost image rebuild + ghcr
push for one script), point the shebang at /bin/bash, which is
already installed in the image and supports pipefail
unconditionally. cozyreport.sh stays /bin/sh — it does not need
pipefail.

Signed-off-by: Myasnikov Daniil <[email protected]>
@github-actions github-actions Bot added size/L This PR changes 100-499 lines, ignoring generated files area/uncategorized PR auto-labeler could not map title scope to a known area/*; please review kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt labels May 6, 2026
@coderabbitai

coderabbitai Bot commented May 6, 2026 •

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

This PR introduces duration validation for HelmRelease flags in the operator, and enhances two reporting scripts with Bash compatibility, improved path quoting for safety, and new diagnostic sections for OOMKilled containers and Talos node logs.

Changes

HelmRelease Duration Validation

Layer / File(s) Summary
Constants & Function Signature
cmd/cozystack-operator/main.go
Introduced helmReleaseMinDuration constant and updated parsePositiveDuration to accept a min parameter for lower-bound enforcement.
Validation Logic
cmd/cozystack-operator/main.go
Updated parsePositiveDuration function body to validate parsed duration against the supplied minimum when min > 0.
Flag Parsing Integration
cmd/cozystack-operator/main.go
Updated internal parseFlag call to pass helmReleaseMinDuration as the third argument to parsePositiveDuration.
Tests
cmd/cozystack-operator/main_test.go
Extended TestParsePositiveDuration with min field in test table and four new test cases covering above-min, at-min, below-min, and sub-second scenarios.

Reporting Script Enhancements

Layer / File(s) Summary
Shell Robustness
hack/cozyreport-summary.sh
Changed shebang from /bin/sh to /bin/bash and updated options from set -eu to set -euo pipefail with explanatory comments.
OOMKilled Reporting
hack/cozyreport-summary.sh
Added new "Containers with OOMKilled lastState" section using kubectl go-template to report containers with lastState.terminated.reason == "OOMKilled", including namespace, pod name, exit code, and finish time.
Path Quoting Safety
hack/cozyreport.sh
Introduced consistent quoting for REPORT_DIR, REPORT_PDIR, and related path expansions throughout the script to handle paths with spaces robustly.
Talos Integration
hack/cozyreport.sh
Added new Talos reporting block under sandbox-host section: if /workspace/talosconfig exists, collects dmesg, kubelet, and containerd logs from discovered nodes via talosctl and writes to report directory.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

A rabbit hops with glee, ✨
Validating durations with timely decree,
While scripts gain Bash cheer,
And Talos logs appear—
Diagnostics flow wild and free! 🐰

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is vague and generic, using the non-descriptive phrase 'address review followups' without specifying what changes or improvements are being made. Revise the title to be more specific about the main changes, such as 'Add minimum duration validation for HelmRelease flags and improve OOM reporting' to better convey the primary improvements.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/followups-from-prs

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 and usage tips.

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses feedback from previous issues by tightening configuration validation in the operator and improving the robustness and diagnostic capability of the cozyreport utility scripts. These changes ensure more reliable controller behavior and provide better visibility into container lifecycle issues during cluster diagnostics.

Highlights

  • Operator Duration Validation: Updated parsePositiveDuration to enforce a minimum duration of 15s for HelmRelease flags, preventing controller thrashing from misconfigured sub-second intervals.
  • Diagnostic Reporting Improvements: Enhanced cozyreport scripts with consistent variable quoting, set -o pipefail for better error detection, and a new diagnostic section to identify OOMKilled containers via lastState.
New Features

🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment Gemini (@gemini-code-assist) Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on Gemini (@gemini-code-assist) comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a minimum duration enforcement of 15 seconds for HelmRelease flags within the operator to prevent controller thrashing, accompanied by updated unit tests. Additionally, it enhances the diagnostic tools by adding OOMKilled container status reporting to cozyreport-summary.sh and improving shell script reliability in cozyreport.sh through consistent variable quoting and explicit error handling documentation. Feedback was provided regarding a missing release-note block in the PR description, which is required by the repository style guide.


parseFlag := func(flagName, raw string) time.Duration {
d, err := parsePositiveDuration(flagName, raw)
d, err := parsePositiveDuration(flagName, raw, helmReleaseMinDuration)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

low

The pull request description is missing a release-note block, which is required by the repository style guide (line 51). Please add a block to the PR description following this format:

```release-note
chore(operator): address review followups for HelmRelease knobs and cozyreport

<details>
<summary>References</summary>

1. PR body must contain a release note block. <sup>([link](https://github.com/cozystack/cozystack/blob/main/.gemini/styleguide.md))</sup>
</details>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@hack/cozyreport-summary.sh`:
- Line 11: The script uses three instances of head -40 which, under set -o
pipefail, cause SIGPIPE failures; locate each occurrence of head -40 in the
script and replace them with a sed invocation that reads and prints the first 40
lines without closing the input early (e.g., sed -n '1,40p') so the producer
won't receive SIGPIPE and the pipeline won't abort.

In `@hack/cozyreport.sh`:
- Around line 6-7: Update the top-of-file comment that describes the strict-mode
behavior to match the actual invocation in hack/cozyreport.sh: change the
wording that currently states the companion script is "set -eu" to reflect "set
-euo pipefail" so the comment accurately documents the script's flags; locate
the existing comment near the script header and adjust its text to mention "set
-euo pipefail" (reference: the comment block describing fail-fast policy in
hack/cozyreport.sh).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5ce02112-9a37-4b0d-a78e-0671357f43fc

📥 Commits

Reviewing files that changed from the base of the PR and between 7520967 and cd28f71.

📒 Files selected for processing (4)
  • cmd/cozystack-operator/main.go
  • cmd/cozystack-operator/main_test.go
  • hack/cozyreport-summary.sh
  • hack/cozyreport.sh

# silently-empty ones, and the e2e-sandbox image's /bin/sh (Ubuntu dash)
# does not implement pipefail. The call site wraps this script in `|| true`
# so a hard pipeline failure still produces a (truncated) summary.txt.
set -euo pipefail

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify pipefail behavior with early-closing consumer vs non-early-closing limiter.
set -u

bash -lc 'set -o pipefail; yes | head -n 40 >/dev/null; echo "head pipeline exit=$?"'
bash -lc 'set -o pipefail; yes | sed -n "1,40p" >/dev/null; echo "sed pipeline exit=$?"'

Repository: cozystack/cozystack

Length of output: 398


🏁 Script executed:

cat hack/cozyreport-summary.sh

Repository: cozystack/cozystack

Length of output: 4423


🏁 Script executed:

#!/bin/bash
# Test pipefail behavior with head vs sed using seq (available in sandbox)

echo "=== Test 1: pipefail with head (should fail if output > 40 lines) ==="
bash -c 'set -o pipefail; seq 1 100 | head -n 40 >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 2: pipefail with sed (should succeed) ==="
bash -c 'set -o pipefail; seq 1 100 | sed -n "1,40p" >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 3: pipefail with head (small output, < 40 lines) ==="
bash -c 'set -o pipefail; seq 1 10 | head -n 40 >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 4: WITHOUT pipefail, head with large output (should succeed) ==="
bash -c 'seq 1 100 | head -n 40 >/dev/null; echo "Exit code: $?"'

Repository: cozystack/cozystack

Length of output: 547


🏁 Script executed:

#!/bin/bash
# Test pipefail behavior using bash built-ins

echo "=== Test 1: pipefail with head (100 lines of output, limit to 40) ==="
bash -c 'set -o pipefail; (for i in {1..100}; do echo "line $i"; done) | head -n 40 >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 2: pipefail with sed (100 lines of output, limit to 40) ==="
bash -c 'set -o pipefail; (for i in {1..100}; do echo "line $i"; done) | sed -n "1,40p" >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 3: pipefail with head (10 lines of output, ask for 40) ==="
bash -c 'set -o pipefail; (for i in {1..10}; do echo "line $i"; done) | head -n 40 >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 4: WITHOUT pipefail, head with 100 lines ==="
bash -c '(for i in {1..100}; do echo "line $i"; done) | head -n 40 >/dev/null; echo "Exit code: $?"'

echo
echo "=== Test 5: Verbose - watch head with 100 lines under pipefail ==="
bash -c 'set -o pipefail; (for i in {1..100}; do echo "line $i"; done) | head -n 40; echo "Exit code: $?"' | tail -5

Repository: cozystack/cozystack

Length of output: 492


🌐 Web query:

pipefail head SIGPIPE bash pipeline failure exit code

💡 Result:

In Bash pipelines like cmd1 | head, when head exits after reading its required input (e.g., first 10 lines), it closes the pipe. If cmd1 attempts to write more data, the kernel sends it SIGPIPE (signal 13), causing cmd1 to terminate with exit code 141 (128 + 13).[1][2][3] Without set -o pipefail, the pipeline's overall exit status is that of the last command (head), which is 0 (success).[4][5] With set -o pipefail enabled, the pipeline's exit status is the rightmost non-zero exit status from any command in the pipeline. Thus, it becomes 141 from the upstream command killed by SIGPIPE, causing the pipeline to "fail" (non-zero exit).[4][3][2][6] This is expected behavior, not a bug—SIGPIPE indicates normal early termination by the consumer (head), but pipefail propagates the non-zero status for strict error checking.[7][8] Official Bash docs confirm pipefail uses the last non-zero exit status without special SIGPIPE handling.[4][9] To handle/ignore SIGPIPE failures under pipefail (common with head, grep -q, etc.): - Check ${PIPESTATUS[0]} == 141 and treat as success: cmd1 | head; [[ ${PIPESTATUS[0]} -eq 141 || ${PIPESTATUS[0]} -eq 0 ]][6][2] - Use subshell or || true: (cmd1 | head) || [ $? -eq 141 ][6] - Process substitution: head < <(cmd1) (avoids pipe).[10] - Temporarily disable pipefail around the pipeline.[2] Example: set -o pipefail yes | head -n1 echo $? # 141 (fails) set -o pipefail yes | head -n1 echo ${PIPESTATUS[@]} # 141 0 # Check: [[ ${PIPESTATUS[0]} -ne 141 ]] || echo "OK" [3][2][11]

Citations:


Replace head with sed to avoid SIGPIPE failures under pipefail.

With set -o pipefail on line 11, pipelines ending in head -40 (lines 22, 30, 58) trigger SIGPIPE when the producer writes more data than head consumes. This causes the entire pipeline to fail with exit code 141, aborting summary generation even without actual kubectl errors.

Replace all three instances with sed -n '1,40p', which reads all input without closing the pipe early:

Suggested patch
-    | head -40
+    | sed -n '1,40p'
@@
-  | head -40
+  | sed -n '1,40p'
@@
-  | head -40
+  | sed -n '1,40p'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@hack/cozyreport-summary.sh` at line 11, The script uses three instances of
head -40 which, under set -o pipefail, cause SIGPIPE failures; locate each
occurrence of head -40 in the script and replace them with a sed invocation that
reads and prints the first 40 lines without closing the input early (e.g., sed
-n '1,40p') so the producer won't receive SIGPIPE and the pipeline won't abort.

Comment thread hack/cozyreport.sh
Comment on lines +6 to +7
# is fail-fast (`set -eu`) because it is wrapped in `|| true` at the call
# site below — any change to either policy should be made deliberately.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Keep strict-mode comment aligned with actual summary script.

Line [6] says the companion script is set -eu, but it is now set -euo pipefail. Updating this avoids confusion during incident triage.

Suggested patch
-# is fail-fast (`set -eu`) because it is wrapped in `|| true` at the call
+# is fail-fast (`set -euo pipefail`) because it is wrapped in `|| true` at the call
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# is fail-fast (`set -eu`) because it is wrapped in `|| true` at the call
# site below — any change to either policy should be made deliberately.
# is fail-fast (`set -euo pipefail`) because it is wrapped in `|| true` at the call
# site below — any change to either policy should be made deliberately.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@hack/cozyreport.sh` around lines 6 - 7, Update the top-of-file comment that
describes the strict-mode behavior to match the actual invocation in
hack/cozyreport.sh: change the wording that currently states the companion
script is "set -eu" to reflect "set -euo pipefail" so the comment accurately
documents the script's flags; locate the existing comment near the script header
and adjust its text to mention "set -euo pipefail" (reference: the comment block
describing fail-fast policy in hack/cozyreport.sh).

@lexfrei

Copy link
Copy Markdown
Contributor

I'd push back on this PR title. It describes the workflow that produced the PR ("address review followups from #2509 and #2553") rather than what the change actually does.

Why this matters

The PR title is the most-read piece of text this change will ever have. It shows up in:

  • the PR list on GitHub (the only thing maintainers skim when triaging the queue)
  • notification emails and Slack/Discord webhooks
  • release notes and changelog generators
  • search results when someone later greps closed PRs for "what changed in operator startup validation"
  • on squash-merge, it becomes the permanent commit title in git log, git blame, and every downstream mirror

Three problems with a title that points at other PRs:

  1. Not self-contained. A reader on the PR queue, in release notes, or six months later on git blame has to open feat(operator): expose HelmRelease generation knobs (interval, retry-interval, timeouts, max-history) #2509 and feat(cozyreport): collect Flux/cert-manager/host context + summary.txt #2553 to find out what landed here. If either of those was also titled "followup to #X", the trail keeps going. The title should describe the artifact, not the path that led to it.
  2. Leaks provenance instead of describing content. "Followups", "address review", "pass N" describe how the PR came to exist (someone left review comments on an earlier PR), not what is now true about the code. Review-process metadata is ephemeral context that belongs in the PR thread; the title is the durable summary.
  3. Hides substantive work. There are two distinct, useful changes here, and neither is visible from the title:
    • Operator startup-time validation: parsePositiveDuration now enforces a 15s minimum on --helmrelease-*-timeout flags, so a misconfigured 1ms value fails fast instead of producing a HelmRelease that thrashes the controller.
    • cozyreport hardening: consistent quoting across loops, pipefail in the summary script (shebang switched to bash since dash doesn't implement it), and surfacing container-state OOMKilled via lastState.terminated.reason to catch cgroup-only kills.

Either would stand on its own. Bundled under "followups", they're invisible until someone opens the diff.

Suggestion

The two changes are mechanically unrelated (operator Go code vs. diagnostic shell scripts), so the cleanest fix is to split into two PRs with descriptive titles, e.g.:

  • fix(operator): enforce 15s minimum on HelmRelease duration flags
  • fix(cozyreport): enable pipefail and surface OOMKilled lastState

If splitting isn't worth the churn, at minimum retitle to something content-bearing — e.g. fix(operator,cozyreport): validate HR duration flags; harden cozyreport diagnostics — so the title works without #2509 and #2553 as a decoder ring.

@lexfrei Aleksei Sviridkin (lexfrei) added area/platform Issues or PRs related to platform infrastructure (bundle, flux, talos, installer) area/testing Issues or PRs related to testing (e2e, bats, unit tests) and removed area/uncategorized PR auto-labeler could not map title scope to a known area/*; please review labels May 6, 2026
@myasnikovdaniil
myasnikovdaniil marked this pull request as draft May 6, 2026 13:21
@myasnikovdaniil myasnikovdaniil self-assigned this May 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/platform Issues or PRs related to platform infrastructure (bundle, flux, talos, installer) area/testing Issues or PRs related to testing (e2e, bats, unit tests) kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt size/L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants