Repository navigation
Description
Summary
Introduce .backports.yml as the single source of truth for which backport branches exist and which are active. Add backport_check_active.sh to evaluate branch status, and a one-time bootstrap script to seed the inventory from existing branches. This is the foundation that all other backport automation reads from — no other backport tooling issue should start implementation until this is merged.
Background
There is currently no structured record of which backport branches are active, which are still maintained, and which have been abandoned. Without this, automation cannot reliably discover the right target branches, and dead branches risk being accidentally targeted.
Deliverables
.backports.yml (repo root)
Single source of truth for the backport branch inventory. Schema:
backports:
- package: aws
branch: backport-aws-6.14
base_version: 6.14.2
base_commit: "cd8d67e56e"
maintained_until: "2027-01-15" # 8.19 EOL
archived: false
- package: aws
branch: backport-aws-3.17
base_version: 3.17.0
base_commit: "5b593f6681"
maintained_until: null
archived: falseActive branch logic: a branch is inactive if archived: true OR (maintained_until != null AND maintained_until < today). Both maintained_until and archived are complementary: maintained_until handles known-deadline expiry automatically; archived handles explicit early abandonment.
dev/scripts/backport_check_active.sh
Reads .backports.yml and evaluates whether a given branch is active.
Flags: --branch <branch-name>, --json
Exit codes: 0 = active, 1 = inactive
{
"branch": "backport-aws-6.14",
"active": true,
"archived": false,
"maintained_until": "2027-01-15"
}Bootstrap script (one-time)
Seeds .backports.yml from existing branches:
git ls-remote --heads origin 'backport-*'to enumerate all existing branches- Branches with last commit older than one year default to
archived: true - Requires a manual review pass to fill in known
maintained_untildates (e.g. 8.19 EOL →2027-01-15)
Considerations
- Nested package directories: the
packagefield stores the package name as it appears inmanifest.yml. The repository supports both a flat structure (packages/<package>) and a nested structure (packages/<technology>/<package>). All scripts that need the filesystem path to a package must resolve it dynamically from the name rather than assuming a flat layout. Investigate whethermage listPackagesor an equivalent helper already provides a name → path mapping, or whether afind packages/ -name manifest.ymllookup is needed.
Acceptance criteria
-
.backports.ymlexists at the repo root covering all current backport branches - Known
maintained_untildates are filled in -
backport_check_active.shcorrectly returns active/inactive per the defined logic -
--jsonoutput is parseable and matches the schema above - Set for now
elastic/ecosystemas a codeowner of.backports.ymlfile - Add a new step in the Buildkite main pipeline to ensure that each entry has the expected fields (
package,base_version,base_commit,branch,maintained_untilandarchived) - Updating this file should trigger the CI pipeline but it should not trigger testing all packages (it should be included in the
non_package_patternslist in.buildkite/scripts/common.sh) - Assess whether or not to run the buildkite pipeline
integrations-backportin dry-run mode if.backports.ymlis updated.
Activity
github-actions commentedon May 26, 2026
This issue is the right next implementation slice (not a duplicate): branch creation exists, but an inventory source-of-truth and active-branch evaluator are still missing and should be added first.
Recommendation
Proceed with #19210 as the foundation for backport automation, with this order:
.backports.yml+ one-time bootstrap generator.dev/scripts/backport_check_active.sh(--branch,--json, exit0/1per active logic).Findings
.buildkite/pipeline.backport.yml:20-54.buildkite/scripts/backport_branch.sh:79-87,.buildkite/scripts/backport_branch.sh:292-297docs/extend/developer-workflow-support-old-package.md:10-16docs/extend/developer-workflow-support-old-package.md:81-121.buildkite/scripts/backport_branch.sh:90-106(get_package_path).buildkite/scripts/common.sh:914-916(list_all_directoriesvia mage)magefile.go:221-231anddev/citools/packages.go:19-50#19016(open) defines branch inventory as an unresolved gap.#17403(closed/completed) and#18577(merged) addressed nested package-dir compatibility, not inventory/active-state policy.#19104(merged) addeddev/scripts/get_release_commit.shand docs updates, but not.backports.yml/ active-check script.Verification
Current repo/remote state from commands in workspace:
This confirms there are existing
backport-*branches to inventory, while the requested inventory/checker artifacts are not yet present.Detailed Action Plan
Create inventory file at repo root
.backports.ymlwith schema from this issue (package,branch,base_version,base_commit,maintained_until,archived).backport-*remote branches.Add one-time bootstrap script
dev/scripts/to:git ls-remote --heads origin 'backport-*'archived: truefor >1 year stale branches.backports.ymlmaintained_untildates.Add active-status checker
dev/scripts/backport_check_active.sh:--branch <name>--json0if active,1if inactivearchived: trueOR (maintained_untilset and< today)Integrate checker where branch decisions happen
.buildkite/scripts/backport_branch.sh.buildkite/pipeline.backport.ymlDocumentation updates
docs/extend/developer-workflow-support-old-package.mdwith:--jsonincluded)Related Items
get_release_commit.sh) + docs improvements.buildkite/scripts/backport_branch.sh:79-87.buildkite/scripts/backport_branch.sh:90-106.buildkite/pipeline.backport.yml:20-54docs/extend/developer-workflow-support-old-package.md:10-16Note
🔒 Integrity filter blocked 3 items
The following items were blocked because they don't meet the GitHub integrity level.
pull_request_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".pull_request_read: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".To allow these resources, lower
min-integrityin your GitHub frontmatter:What is this? | From workflow: Issue Triage
Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not.
infra-vault-gh-plugin-prod commentedon May 26, 2026
Pinging @elastic/ecosystem (Team:Ecosystem)
[backports] Add .backports.yml inventory, validator, and dry-run trig…