Prometheus LTS 3.5 to 3.13 upgrade: why the move can't wait
If your estate still runs Prometheus LTS 3.5, the date that matters is July 31, 2026. That is when the 3.5 line reached end of life, and it no longer receives bug fixes. Any defect or security issue found after that date will not be patched on 3.5, so each server, alert rule and integration built on that line now runs without upstream fixes. Prometheus often sits at the center of incident response, so a monitoring failure can delay detection in every system it watches. Start by listing every Prometheus server in your estate and recording its exact version, because a server on an old line that nobody remembers is the usual source of surprise. Then assign an owner and a target date for the move.
The supported target is the current LTS line, 3.13. Prometheus released 3.13 on July 1, 2026, and it receives bug fixes until July 31, 2027, the one-year window the project gives each long-term support release. Plan around the latest 3.13 patch, which was 3.13.4 in the October 2026 release list, and confirm the patch level again on the day you pin versions. The newer 3.15.0 release, published September 25, 2026, is useful context for the roadmap. It is a minor release, though, and minor releases generally stop receiving bug fixes about six weeks after they ship, so running it in production would likely mean another upgrade within weeks.
Why it can't wait comes down to rhythm. A long-term support line gives you one year of fixes, so 3.13 will eventually be replaced by a later LTS line, and your team will face the same kind of move again. Treat each LTS change as a recurring event rather than a one-off project. Schedule the next evaluation well before the 3.13 window closes on July 31, 2027, and record the decision in your change calendar. Also confirm on the Prometheus release cycle page when the next LTS line is announced, because that date sets the start of your planning window.
Before you plan the work, confirm the supported path from 3.5 to 3.13 in the release notes for each intermediate version. The release notes and the project's GitHub releases page are the sources to check, and the answer determines whether you upgrade in one step or in stages. Check what changed across the intermediate releases, since changes accumulate. Note any change that affects your scrape configuration, recording and alert rules, remote write targets or exporters, and record which of those your estate uses. Those notes become the basis for your test plan and your rollback decision.
What changes between 3.5 and 3.13 and what each change asks of you
This table groups changes between LTS 3.5 and LTS 3.13 by release area, with the impact on a running estate and the action each one requires. Per-release entries must be filled from the release notes of each intermediate minor release, so the rows show where to look and what to test. Treat it as a checklist: every intermediate release that touches an area needs its own entry before you plan the cutover.
| Change area | Impact | Action needed |
|---|---|---|
| Scrape and discovery behavior | Target lists, labels or scrape success can shift after the upgrade. | Compare target health and label sets in staging against production before cutover. |
| Query and PromQL behavior | Function behavior or label handling may change results on existing dashboards and rules. | Replay your dashboard and rule query inventory and diff results over a fixed time window. |
| Storage | Changes to the TSDB, retention or write-ahead log handling can affect disk use and restores. | Confirm retention settings and take a verified backup before the first start on 3.13. |
| Alerting and API | Rule evaluation, alert state or HTTP API responses may differ for clients and tooling. | Run promtool rule checks and test alert routes to every Alertmanager receiver. |
| Security settings | Defaults for TLS, authentication, and admin or lifecycle endpoints may change. | Review TLS 1.2 minimum, basic auth over TLS, and admin and lifecycle flags against the security model. |
| Deprecated and removed flags | Flags removed or renamed in intermediate releases can stop the process from starting. | Start the new binary with your current flags and resolve each warning or error before rollout. |
Which breaking changes and deprecations to check before cutover
The main risk in this step is that changes accumulate across the minor releases between 3.5 and 3.13. Each minor release starts a new six-week cycle, so the path includes several releases, and each one can carry breaking changes and deprecated flags. A removal in one release can interact with a rename or default change in a later one, so reading only the notes for 3.13 can miss behavior that changed along the way. Work through the release notes for every intermediate minor release in order, starting with the first release after 3.5. Record each item in a single register so the review is traceable.
Deprecated items are easy to assume away because a running configuration often keeps starting cleanly. Deprecation notices tell you what will change, but the release notes are where you confirm when a flag or option is removed or its behavior changes. Build an inventory from the environment you actually run: command-line flags in service units or container arguments, every key in the main configuration file, rule file constructs, remote write and remote read settings, scrape job definitions, and any API consumers such as dashboards, automation or Alertmanager integrations. Compare each item against the full range of notes, and confirm the result against your own configuration repository rather than memory.
The 2.x to 3.x changes covered on the sibling page do not all apply to this step. Some of them were already absorbed if the estate moved through 3.x releases earlier, and others never reach a team that starts on 3.5. Do not assume either way. Ask the owners of the current estate which 3.x changes were handled during earlier moves, which were skipped with a workaround, and whether any local patches, custom exporters or hand-edited configuration bypass a change. Each answer should be marked as confirmed in the register, with the person who confirmed it and the date.
Set the scope of the review against the timeline. LTS 3.5 reached end of life on July 31, 2026, and the LTS 3.13 line, released July 1, 2026, is supported until July 31, 2027. Releases after 3.13, including v3.15.0, sit outside this target, so their notes matter only if you plan to move past the LTS line. Before cutover, check the latest patch on the 3.13 line in the project's GitHub releases, since the review should match the build you deploy. Items that need a test should be assigned to an owner and tied to the staging run described on this page.
Preparation: backups, inventory and a test environment to build first
Four preparation areas come before any version change on a Prometheus server: what you can restore, what the server does today, what depends on it, and where the new version can be tested safely. Local storage is single-node and not replicated, so the backup and restore path must be exercised, not assumed.
Back up configuration, rules and TSDB data
Back up the Prometheus configuration file, every rule file, and the local TSDB data directory before anything else changes. The data directory holds two-hour blocks and a write-ahead log, and with the default 15 days of retention it may contain history you cannot rebuild from scrapes. Local storage is single-node and not replicated, so a lost volume means lost data unless a restore has been tested. Copy from a stopped instance or a consistent volume snapshot, store copies off the host, and restore them into a scratch instance to confirm it starts and answers queries for the expected time range.
Inventory every dependency
List every scrape config, recording rule, alerting rule, exporter, remote write target and reverse proxy in front of Prometheus. For each item, record the owner, the target address or job name, the authentication method, and the Prometheus version it was last tested against. Exporters and remote write receivers can change behavior between releases, and a reverse proxy may strip or rewrite headers the newer server expects. This list becomes the checklist for post-upgrade verification, so an item missing from it will likely go unchecked.
Capture dashboards and Alertmanager configuration
Export every dashboard that queries this Prometheus, and save the Alertmanager configuration, including routes, receivers, inhibition rules and any silences still active. Dashboards depend on metric names, label values and query behavior, so each panel that matters needs a documented expected result before the upgrade. Confirm which Alertmanager instances Prometheus sends to. The Alertmanager docs describe clustering for high availability, and Prometheus should be configured with every Alertmanager instance so that alert delivery is not tied to one node.
Build a test environment that mirrors production
Build a test Prometheus that scrapes targets mirroring production, including the same exporters, TLS settings and authentication paths. Load the same rule files and, where policy allows, a recent copy of production data so queries can be compared. A test instance that scrapes only a few static endpoints will not reveal failures in service discovery, scrape protocol handling or remote write. Run the backup restore drill here too, and record how long the restore and the rule validation took so the production window is planned from evidence.
How to test alert rules and dashboards before the Prometheus upgrade
Test the upgrade by running the same rule groups and dashboard queries against your 3.5 instance and the 3.13 test instance, then comparing what each returns. Start with recording rules. Export the output series from both instances over the same time window and compare sample values, series counts and label sets. A recording rule that produces a different label set on 3.13 will silently break every dashboard panel and alert that selects on those labels, so label-set diffs matter more than small floating-point differences. Keep the comparison scripted and repeatable so the team can rerun it after every change to the test configuration.
Alert rules need a different check because the question is behavior over time, not a single query result. Replay the same input data into both instances, or point both at the same representative targets, and record when each alert enters pending, firing and resolved states. Compare the timing, the label sets attached to each alert, and any annotations that interpolate label values. Pay attention to alerts that depend on staleness, absent series or range functions, since those are the places where a version change is most likely to shift results. Document each intentional difference so that reviewers can separate accepted changes from regressions.
Run a test scrape of representative targets, not only the simplest exporters. Include targets that use each authentication method you rely on, targets reached through service discovery, any targets that push through a gateway, and at least one target with unusual metric names or high cardinality. Confirm that the 3.13 test instance scrapes these targets successfully and that the sample counts match the 3.5 instance within the tolerance you set. Scrape failures on targets that send unusual headers or content types are often the first symptom of a compatibility issue, so review the scrape error metrics as well as the data.
Check Alertmanager routing separately. Point the test Prometheus at the Alertmanager configuration you plan to run, and confirm that each alert reaches the intended receiver, that grouping and inhibition behave as before, and that silences created in one environment match the alerts they should suppress. Prometheus should send to every Alertmanager instance, so verify the full list of endpoints in the test configuration. Ask your team to confirm which Alertmanager version and API it will run against during the upgrade, because routing tests are only meaningful against the version you intend to deploy.
Before choosing any validation tool, check the Prometheus release notes for 3.13 and the intermediate releases between 3.5 and 3.13. Confirm which configuration fields, query behaviors and API changes apply to your rules and dashboards, and whether any linting or rule-checking tool you consider supports those changes. Record the results of each check in a shared document with the owner, the date and the accepted differences, so the sign-off for the production upgrade rests on evidence that someone other than the author can review.
The upgrade sequence with checks and rollback points
This sequence moves a production Prometheus estate from the end-of-life 3.5 line to the 3.13.x LTS patch level in controlled stages. Each stage closes with a check, and each change has a named point the team can return to if a check fails.
Freeze configuration changes and record the baseline
The platform owner pauses changes to scrape configs, rule files, Alertmanager settings and service discovery, then records the running Prometheus version, the configuration hash and the full list of targets and rule groups. Dashboard and alert owners confirm in writing which queries they depend on. The step is done when the baseline is tagged in version control and a diff against the live configuration is empty. That tag is the first rollback point, because every later stage restores to it.
Back up data and configuration, then test the restore
The operator copies the configuration and the time series data directory from each instance, either from a stopped instance or from a filesystem snapshot. If the TSDB snapshot endpoint is used, the admin API must be enabled for that call, so the operator turns it off again afterward. A restore test runs on a scratch host to confirm the copy starts and serves historical queries. The backup is a rollback point only after that restore test passes. Retention is set at 15 days by default, so confirm locally how much history the backup must hold.
Upgrade the test environment to 3.13.x
The platform team installs the 3.13.x LTS patch in the test environment, using the most recent patch release at the time of the change, and loads the frozen configuration unchanged. They confirm the process starts, configuration validation passes, every scrape target reports up or has a known reason for being down, and rule groups load without errors. Any configuration that the new version rejects is recorded as a blocker before production planning continues. The rollback point is the test environment rebuilt from the verified backup.
Run side-by-side comparison checks
The team runs the 3.5 and 3.13.x instances against the same targets and compares what each returns. They check series counts per job, rule evaluation results for the recording and alerting rules, and the output of the dashboard queries that owners listed in the baseline. The team also compares which alerts fire during the same window. Owners sign off on any difference, and each difference is either fixed or accepted with a reason. The step closes when the comparison report has no unexplained gaps, which gives the go or no-go input for production.
Schedule the production change with go and no-go criteria
The change owner sets a window, names the engineers on call, and assigns the person who decides whether to roll back. Go and no-go criteria are written down before the window opens, covering scrape health, rule evaluation success and test alert delivery. The end-of-life date for 3.5 (July 31, 2026) is recorded as the reason the change is needed, and the 3.13 support end date (July 31, 2027) is recorded as the planning horizon. The step is complete when the signed change record exists and the rollback owner has confirmed the restore steps.
Upgrade one staging or canary instance
The operator upgrades a single production-like instance to the same 3.13.x patch tested earlier, keeping the frozen configuration and data directory. The instance runs alongside the others for a period set in the change record, so its results can be compared with peers that are still on 3.5. The instance must pass the verification in the next step before any other instance changes. If it fails, the operator reverts the binary to 3.5 and restores the baseline configuration, which is the rollback point for this stage.
Verify scrapes, rule evaluation and alert delivery
On the canary, the team checks three things. Scrape health is compared with peers across all jobs, rule evaluation errors and duration are compared with the baseline, and a test alert is sent through the path to every Alertmanager instance so each one receives it. Prometheus must reach every Alertmanager directly, so the test confirms each peer, not only the one behind any shared address. The step is done when all three checks match the baseline. A failed alert delivery check stops the rollout even if scrapes look healthy.
Roll through production one instance at a time
The operator upgrades the remaining Prometheus instances one at a time, running the same checks after each and holding the rollout if any check fails. Each completed instance becomes a rollback point for the next, so a failure affects one instance at most. Alertmanager cluster health is checked at the end, along with a final comparison of dashboards and alert history. The change record is closed with the final version, the tagged configuration and the date of the last successful verification, and the team schedules the next LTS review ahead of the 3.13 support end date.
Rollback plans and what they mean for stored data
A rollback can return the server to the previous binary and configuration, but it cannot restore data that was never captured or that has already expired. Before the upgrade starts, the team should decide which path it will rely on: a supported downgrade from the new release, or a restore of the pre-upgrade data directory and configuration onto the old release. These paths behave differently, and the first depends on facts this page does not supply. Confirm in the release notes for every release in the path whether downgrade is supported, and whether the newer version changes how it writes time series database files. If the release notes do not state it, treat a downgrade as unsupported and plan around a restore.
Configuration is the easiest part to restore, provided it lives in version control. The main Prometheus configuration file, the rule files it loads, the target definitions and any file-based service discovery inputs should be tagged at the moment of the upgrade, so the exact files that ran on the previous version can be redeployed. Alertmanager configuration and any dashboard or recording rule definitions kept in Grafana or elsewhere need their own tags, because they sit outside the Prometheus data directory. If the team plans to apply the old configuration by reload instead of restart, note that the reload endpoint is only enabled when the --web.enable-lifecycle flag is set, and that flag is disabled by default. The rollback runbook should say exactly how the old configuration will be applied.
The data directory snapshot is the only local copy of stored samples, because local storage is not clustered or replicated. Take it with the Prometheus process stopped, or from a volume or filesystem snapshot taken at a consistent point. Verify it before the upgrade by starting the old binary against a copy in a test environment. A snapshot restores the state at the moment it was taken. Samples collected after that point are lost from the local copy unless they were also sent through remote write to external storage. If the newer version has already written blocks, the old version may fail to read them, so the snapshot taken before the first start of the new version is the one that matters.
Retention sets how far back any restore can reach. The default retention window is 15 days, and it can be configured by time or by size. Samples older than the window are removed as the server runs, so restoring an older snapshot does not bring back history that was already removed before the snapshot was taken. Once the restored server runs again, retention applies to the restored data as well. Size-based limits can remove data sooner than the time limit suggests when ingest is heavy. Ask the team to confirm the retention settings on the current server, then decide how long a rollback window must last. If that window is longer than the retention period, the team must either accept a gap in history or extend retention and storage capacity before the upgrade.
Turn these points into a written rollback decision before the change window opens. Name the point of no return, which is the first start of the new version that writes data, and the criteria for choosing a rollback over a forward fix. Test the restore on a copy of the data directory with the old binary, and record how long the stop, restore and reload steps take during that test. Include Alertmanager, the rule files and any remote write target in the test. Record who can authorize the rollback, and confirm that the saved configuration and snapshot are stored on a system separate from the Prometheus host so they survive a host failure.
What drives the effort of a Prometheus upgrade
This table lists the factors that most change how much work and risk a move from Prometheus LTS 3.5 to LTS 3.13 involves. Read each row as a question to answer about your estate before planning the work. The main takeaway is that effort grows with the number of targets, rules, dashboards and environments, so inventory those first.
| Driver | Why it matters | How to reduce it |
|---|---|---|
| Number of scrape targets | Every target must be checked after cutover, and a large target set makes failed scrapes harder to spot. | Group jobs by owner, keep target labels consistent, and compare scrape success before and after on a staging copy. |
| Custom exporters | In-house exporters may emit output or headers that the newer server parses differently, and their owners must verify it. | Inventory each exporter, capture sample output from the current server, and check it against the target version's release notes. |
| Rule count | Recording and alerting rules load and evaluate on the new version, and small expression changes can alter results. | Validate every rule file with promtool, compare evaluation results on staging, and retire unused rules before the move. |
| Dashboards and query complexity | Panels using regex matchers, label assumptions or heavy aggregations are the most likely place for visible breakage. | Export dashboard queries, run them against the target version, and simplify expensive panels before cutover. |
| Remote write or read integrations | Long-term storage receivers and downstream consumers depend on protocol behavior and need end-to-end testing. | Confirm receiver compatibility with LTS 3.13 and replay a sample window before switching producers. |
| Alertmanager clusters | Each instance must stay reachable and listed in Prometheus configuration, and membership changes can disrupt grouping or silences. | Confirm whether Alertmanager changes in your plan, verify cluster peer status, and test routing with a controlled alert. |
| Reverse proxy and authentication | Proxies, TLS settings and auth headers sit in front of the UI and API and can break health checks or scrapes. | Document the proxy path, test API endpoints and reload behavior, and keep admin and lifecycle endpoints disabled unless required. |
| Retention and data size | Larger local storage lengthens restart work and makes rollback slower, so capacity must be checked before cutover. | Measure current storage size, confirm retention settings, and take a snapshot or backup before the change. |
| Number of environments | Each environment repeats the test cycle, and drift between development, staging and production multiplies the effort. | Keep one versioned configuration source, promote the same change through each environment, and record any differences. |
Setting a yearly LTS upgrade rhythm for Prometheus
An organization on a Prometheus long-term support line should plan one upgrade per support window, and the window is fixed by dates the project publishes. LTS 3.13 was released July 1, 2026 and is supported until July 31, 2027, while LTS 3.5 reached end of life on July 31, 2026. Minor releases work on a much shorter clock: a new minor release cycle begins every six weeks, and a minor release generally stops receiving bug fixes after those six weeks. Teams that treat minor releases as the planning unit end up upgrading far more often than the LTS model requires, and teams that ignore the end-of-life date end up running unsupported code. The planning unit for this rhythm is the LTS line.
Build the calendar backward from the end-of-support date, not forward from whenever the team last looked at the release page. Start with the date the line stops receiving fixes, then place three milestones before it: a staging test run of the upgrade against a copy of current configuration, rules and dashboards, a production change window, and a rollback rehearsal. Set an internal deadline earlier than the vendor date so that a failed test run can be repeated before anything is lost. Confirm each date on the Prometheus release cycle page and in the release notes, because the project publishes them and a planning document should cite them rather than memory. Review the calendar at a fixed interval, such as each quarter, and record the decision in the change log.
Assign one named owner to watch the Prometheus GitHub releases and the release cycle page, and name a backup who receives the same notifications. The owner is responsible for three things: noticing when a new LTS line is announced, recording patch releases on the current LTS line (such as the 3.13 patch series, since LTS patch releases carry bug fixes), and triggering a calendar review when either happens. A team alias on a mailing list is not enough on its own, because alerts tend to be read by no one in particular. The owner should also confirm which version the next LTS line will be before the current line nears its end date, and note whether the chosen path has any intermediate stops.
Schedule the test runs well ahead of end-of-life dates, and make the test environment match production closely enough to mean something. Ask who maintains that environment, how it is refreshed from production configuration, and who signs off the result. Check that the test run covers the parts most likely to change behavior during an upgrade: scrape targets, Alertmanager connections, remote write destinations, recording and alerting rules, and the dashboards that depend on them. Plan for change freezes, staff leave and team turnover, since those are the usual reasons a yearly calendar slips. If the owner changes, transfer the calendar, the subscriptions and the open test runs in the same handover.
Questions buyers ask before upgrading Prometheus with a partner
How much does it cost to upgrade Prometheus from LTS 3.5 to 3.13?
Prometheus has no license fee to pay. The project is licensed under Apache-2.0 and has no paid enterprise edition, so the cost comes from four places: infrastructure to run the upgraded servers and test environments, storage for retained data and any long-term storage system, implementation work for assessment, rule and dashboard testing and cutover, and the staff who run the platform afterward.
Implementation is usually one-time. Infrastructure, storage and staff recur. Ask for a quote that prices each component separately, names who pays for each, and states which test environments are included. The total depends on the size of your estate and on the changes found during assessment, so no single figure applies to every team.
How long does a Prometheus LTS upgrade take in practice?
Duration depends on the effort drivers in your environment, not on a fixed figure. The main drivers are the number of Prometheus servers and Alertmanager instances, how many alert rules and dashboards need review, how many exporters and integrations depend on the current configuration, whether remote storage is in use, and the change windows your organization allows.
The current LTS line, 3.13, is supported until July 31, 2027, which gives you a planning horizon. It does not set a project length. Ask for a schedule with milestones in the written scope, and check that it lists the test windows and approval steps your change process requires.
What does the upgrade need from our team?
The work needs access, decisions and time from your team. Engineers need administrative access to the Prometheus hosts, the configuration repository, Alertmanager, and the service discovery sources that feed scrape targets. Each alert rule and dashboard needs an owner who can confirm what it is supposed to detect or show, because automated checks cannot judge intent.
You also need a named approver for cutover, test windows in staging and production, and someone who can confirm that dashboards and on-call routes still behave as expected after the change. Agree these responsibilities before work starts so that testing does not stall while people are found.
Can our own engineers upgrade Prometheus without a partner?
Yes, your team can upgrade Prometheus itself if it has a tested plan and the release notes. The gap between 3.5 and 3.13 includes changes accumulated across the intermediate releases, so the plan should cover each version in that range, not only the final one. The Prometheus release cycle page and the GitHub releases list the changes to review.
An internal team needs a staging environment, a rollback path, a way to compare query and alert results before and after the change, and time to test rules and dashboards. A partner adds independent review, a documented plan and hands-on testing. Choose the model based on your team's capacity and how much evidence your change board expects.
What does a fixed-scope quote for this upgrade cover?
A fixed-scope quote covers the work listed in a written scope, agreed before work starts. Most DeployOpen engagements are fixed-scope, so the quote states the systems in scope, the deliverables, the timeline and the acceptance steps. For this upgrade, expect the scope to address the assessment of changes between 3.5 and 3.13, the approach to testing rules and dashboards, configuration changes, cutover and rollback steps, documentation and handover.
Ask the quote to name exclusions as clearly as inclusions. Infrastructure, storage, licenses for other tools and ongoing support are often outside the upgrade itself. Ongoing support, upgrades and continuous testing can be added as a retainer if you want the platform kept current after the work.
Will the upgrade change how our alerts and queries behave?
It can, so every alert rule and critical query should be tested against the new version before cutover. Changes accumulated across the intermediate releases can affect rule evaluation, scrape behavior, query results and integrations with downstream tools. Testing should compare results from the current and upgraded versions on the same data, check that each alert fires and resolves as intended, and confirm that Alertmanager routing, grouping and silences still work.
Where a rule behaves differently, the owner decides whether the change is acceptable or whether the rule needs rewriting. Record each decision in the upgrade documentation so that the next LTS move starts from a known baseline.
How do we stay on a supported Prometheus line after the upgrade?
Plan a yearly LTS upgrade rhythm and keep the platform on a line that still receives fixes. LTS releases receive bug fixes for one year. The 3.13 line was released July 1, 2026 and is supported until July 31, 2027, while LTS 3.5 reached end of life on July 31, 2026. Non-LTS minor releases generally stop receiving bug fixes six weeks after release, so they are not a long-term base.
Agree an annual review in which your team checks the current LTS line, reads its release notes, tests rules and dashboards in staging and schedules the next upgrade. Retainers can cover this work if your team does not have the capacity to run it every year.
How DeployOpen works on this
DeployOpen scopes the move from the end-of-life Prometheus 3.5 LTS line to LTS 3.13 as a written, fixed-scope engagement in your infrastructure. The work covers changes accumulated across intermediate releases, tests of your alert rules and dashboards, and a yearly LTS upgrade rhythm your team can run after handover.
How we scope
- The written scope lists every Prometheus server, Alertmanager, exporter and remote write target in the upgrade.
- Scope records the intermediate releases between 3.5 and 3.13 whose changes apply to your configuration.
- Engagements are fixed-scope, with deliverables and timelines agreed in writing before any work starts.
How we build
- Rule and dashboard tests run against LTS 3.13 using a copy of your current configuration and recorded queries.
- Reviews cover scrape and TLS settings, admin API flags and exporters that take targets from URL parameters.
- Alertmanager checks confirm Prometheus lists every instance directly, as the project's guidance describes.
How we hand over
- Handover includes a change record of every configuration and flag altered between the two LTS lines.
- Runbooks cover the yearly LTS upgrade rhythm, rollback steps and how to re-run the rule and dashboard test suite.
- Documentation covers local storage, retention settings and backups, since local storage is not clustered or replicated.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- Your yearly LTS review checks the next line's bug-fix window before you schedule each upgrade.
- Patch level is confirmed against the release cycle page and GitHub releases before each cutover.

