How issues work
On this page
Stackat opens one GitHub issue per tool that is behind its latest stable release. The issue is a to-do list for that upgrade, written for your files, not a generic changelog.
What Stackat finds#
Stackat reads your YAML, Terraform and HCL files (narrow that with scan) and records every pinned version with its file and line:
- Helm charts installed by helmfile, Argo CD
ApplicationandApplicationSet, FluxHelmRelease, KustomizehelmCharts, and Terraformhelm_release; - Terraform providers in
required_providers; - Container images in Kubernetes objects with a pod template (Deployment, StatefulSet, DaemonSet, Job, CronJob, Pod, Argo Rollout and the like), Kustomize
images:overrides and docker compose files; - Custom resources a tool owns, and the Helm values each installation sets, including values files applied outside the repository's own references (see
values).
Images of your own applications are found too, but match no tool Stackat follows and never appear anywhere. An image pinned to latest, or by digest only, names no version, so it gets no issue: see Troubleshooting.
What an issue says#
The title carries the versions and the verdict, for example Upgrade Cilium 1.14.5 → 1.20.3: 2 edits needed. The body, top to bottom:
- The heading: where the tool is pinned (file and line), the latest stable release and the verdict in a sentence.
- Before you upgrade: one line per thing to do, with the file it is in.
- One line on everything else in the upgrade: how many releases, major versions crossed, installations, and security fixes told apart from dependency bumps.
- Details per item: the release that brings it, what changes, and the exact lines in your repository it touches.
- Folded sections for security fixes, other changes, the releases in between with links to their notes, and the commands you can reply with.
When an upgrade fixes vulnerabilities, the issue shows a patch urgency from 0 to 100 under the headline and a table of the CVEs fixed. When a tool is pulled through one of your registry mirrors, it says so and reminds you to mirror the target version first (see mirrors). With a cooldown, it lists the releases held back and the day each becomes eligible.
Release notes about a feature your values switch off everywhere (metrics.enabled: false for a change to metrics.serviceMonitor, say) go under Not affecting this repo and do not count toward the verdict.
Verdicts#
The verdict says what to do. It is plain text on the issue and the dashboard; only the risk has a colour.
| Verdict | Meaning | Risk label |
|---|---|---|
| Safe to upgrade | Nothing in the release notes touches your files. | risk: low |
| Review | Nothing touches your files exactly, but breaking changes or prerequisites are on the way, or upstream deprecated the tool. Check the list first. | risk: medium |
| Edits needed | Changes on the way touch your files: make the edits listed, then upgrade. | risk: high when a breaking change touches your files, otherwise risk: medium |
| Migration | A breaking change touches your files and the upgrade crosses one or more major versions. Make the edits, and upgrade one major version at a time. | risk: high |
| Waiting for release notes | Some releases in between are not read yet. Rare on an issue: Stackat waits for them before opening one. | risk: medium |
The risk scale#
One scale on every issue, on the dashboard and in the Slack digest:
| Risk | Label | Colour | When |
|---|---|---|---|
| High | risk: high | Red | A migration, or edits where a breaking change touches your repository |
| Medium | risk: medium | Orange | Edits needed, something to review, or release notes still to read |
| Low | risk: low | Green | Safe to upgrade |
Labels#
Every issue Stackat opens carries:
stackat, always;- one of
risk: high,risk: mediumorrisk: low; breaking-changewhen a breaking change on the way touches this repository's files;securitywhen a release on the way fixes a vulnerability.
Stackat sets and removes only these labels. Labels your team adds are left alone.
Next up#
Next up is the dashboard's short list of what to do first: the five open items with the highest risk across your repositories. Within the same risk, Stackat ranks:
- what you can do now before what still waits for release notes;
- the most urgent security fix (highest patch urgency), then the most CVEs fixed;
- the bigger verdict (migration, edits needed, review, safe);
- the most releases behind.
The weekly Slack digest's Needs attention uses the same ranking and shows the top three.
Issues are records#
An issue is written once, when Stackat has read every release between your version and the latest. It is not edited afterwards, so it stays a dated record of the risk as it was known. To rewrite it from the latest data, reply /stackpaw reevaluate.
There is one issue per tool and repository. If a tool is installed in several places, the issue covers all of them and upgrades from the oldest version found.
When issues close#
Stackat closes its issues itself, with a comment, leaving the text as it was:
| Situation | Closed as | Comment |
|---|---|---|
| The pinned version reached the latest stable release, or the tool is no longer installed | Completed | "Nothing left to do at abc1234: the tool is on its latest stable release, or no longer installed here. Closing." |
Every file the tool is pinned in is now left out by scan (paths, exclude, file_types) | Not planned | "Not found at abc1234 in the files Stackat scans here: … or is now outside scan in .stackat.yml (paths, exclude, file_types). Closing." |
Someone replied /stackpaw ignore | Not planned | Stackat confirms that it stops tracking the tool in this repository. |
| A second open issue for the same tool (from an older setup) | Not planned | "Duplicate of #12: Stackat keeps one issue per tool and closes this one." |
What happens next:
- Closed as completed counts as an upgrade delivered on the dashboard and in the audit evidence.
- Closed as not planned because of
scannever counts as an upgrade. The evidence lists it as "No longer scanned (left out by .stackat.yml scan)". If the files are scanned again, the tool gets a new issue. - Closed by a person stays closed for that release: Stackat does not reopen it. When a newer release comes out, a new issue is opened and the old one stays as it was.
- Behind again later: when the tool falls behind again after an upgrade, a new issue is opened.
- Cooldown: while every newer release is still inside your
cooldown, an open issue stays open and no new one is opened.