Skip to content

setup: derive adopter config from existing sources (.asf.yaml, repo metadata) instead of duplicating #815

Description

@milamberspace

Problem

When adopting Magpie, several .apache-magpie-overrides/ values duplicate information that already lives elsewhere in the adopter repo and can drift out of date. Feedback from an adopter (Apache JMeter): a PMC member flagged that the per-project config forces maintainers to hand-copy data that changes often — "stale context is worse than no context" — and asked that Magpie source it from .asf.yaml rather than making everyone duplicate it.

For an ASF project a lot of the adopter config is already available:

  • .asf.yaml — repo description, homepage, labels, notifications: (→ dev / commits / PR mailing lists), branch protection.
  • GitHub repo metadata (gh repo view) — default branch, description, topics.
  • CI check names — these are not in .asf.yaml; they come from .github/workflows/ (often generated, e.g. a matrix.* script), so a hand-maintained check-name map is the most stale-prone surface of all.

Proposal

In the adopt / config flow, prefer deriving from existing sources over asking the adopter to duplicate:

  1. Auto-source the stable fields — repo, default branch, mailing lists (from .asf.yaml notifications:), labels — from .asf.yaml + repo metadata, and only fall back to prompting when a value is absent.
  2. Don't require a per-check-name CI map. Given CI job names are volatile (and often generated), default the CI-check → doc mapping to a single generic pointer unless the adopter explicitly wants finer buckets (still overridable).
  3. Optionally, re-derive on /magpie-setup upgrade and surface drift when a sourced value changed, instead of silently keeping a stale copy.

This keeps the committed override surface minimal and removes the maintenance burden the adopter raised.

Context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions