Skip to content

feat(change-request): backend-neutral change-request contract + JIRA/mail patch backends (#669)#679

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/change-request-contract-669
Jul 2, 2026
Merged

feat(change-request): backend-neutral change-request contract + JIRA/mail patch backends (#669)#679
potiuk merged 1 commit into
apache:mainfrom
potiuk:feat/change-request-contract-669

Conversation

@potiuk

@potiuk potiuk commented Jul 2, 2026

Copy link
Copy Markdown
Member

What

Completes #669 — the backend-neutral change-proposal contract — building on the contract:change-request seam introduced in #678 (which registered the contract in the vendor-neutrality scorer with GitHub as the sole backend and no interface tool).

This turns it into a full contract with three backends across three vendors, so the pr-management-* skills can run on non-GitHub projects (JIRA+SVN, [PATCH]-by-mail).

Naming: the issue proposed contract:change-proposal; this ships as contract:change-request to match #678. Same seam; change-request is canonical.

Changes

Contract (Phase 1)

  • tools/change-request/ — interface spec (Kind: interface). Seven backend-neutral verbs (list_open, get, get_discussion, post_review, land, reject, status), generic lifecycle verbs, per-backend resolution tables, and the landcontract:source-control boundary. Answers the issue's four open questions inline.
  • tools/github/ — retagged: one change-request backend (land = gh pr merge), no longer sole.
  • skills/pr-management-triage/ — contract-binding section mapping each disposition to a verb; the gh/GraphQL commands are documented as the GitHub resolution of those verbs. Triage never calls land.

SVN-first backends (Phases 2 & 3)

  • tools/jira-patch/ (Vendor: Atlassian) — patch on a JIRA issue → review via JIRA comments → land delegates to asf-svn (svn patch + svn commit).
  • tools/mail-patch/ (Vendor: email) — [PATCH] thread on dev@ → reads via mail-archive, replies via mail-draft (never sends) → land delegates to asf-svn.

Scoring / docs / tests

  • Vendor-neutrality score 8/10 → 9/10: contract:change-request flips ✅ (3 vendors: GitHub, Atlassian, email); ~19 skills flip vendor-coupled → portable; only mail-draft remains a gap.
  • Regenerated docs/vendor-neutrality.md; updated docs/labels-and-capabilities.md; new scorer test.

Verification

  • vendor-neutrality-score tests: 20 passed (incl. the doc-in-sync check).
  • skill-and-tool-validate: exit 0 (the three new tools pass the adapter-authoring checks).

Closes #669.

…mail patch backends (apache#669)

contract:change-request shipped in apache#678 as a scorer policy entry with
GitHub as the sole backend and no interface tool. This completes it into
a full backend-neutral contract with two more backends, so the
pull-request review/merge gate works on non-GitHub projects.

- tools/change-request/: the interface spec (Kind: interface). Seven
  backend-neutral verbs (list_open, get, get_discussion, post_review,
  land, reject, status), generic lifecycle verbs, and the
  land <-> contract:source-control boundary. Answers the issue's four
  open questions (diff identity, CI/mergeable degradation, apply
  idempotency, patch-author vs committer attribution).
- tools/jira-patch/ (Vendor: Atlassian): patch on a JIRA issue; review
  via JIRA comments; land delegates to asf-svn (svn patch + svn commit).
- tools/mail-patch/ (Vendor: email): [PATCH] thread on dev@; reads via
  mail-archive, replies via mail-draft (never sends); land delegates to
  asf-svn.
- tools/github: retag prose as one change-request backend (land =
  gh pr merge), no longer the sole one.
- skills/pr-management-triage: contract-binding section mapping each
  disposition to a verb; the gh/GraphQL commands are the GitHub
  resolution of those verbs (triage never lands).
- docs + scorer: change-request flips vendor-neutral (3 vendors: GitHub,
  Atlassian, email); score 8/10 -> 9/10; ~19 skills flip vendor-coupled
  -> portable; only mail-draft remains a gap. Regenerate
  docs/vendor-neutrality.md and add a scorer test.

Naming: the issue proposed contract:change-proposal; ships as
contract:change-request to match apache#678. Same seam; change-request is
canonical.

Closes apache#669.
@potiuk potiuk merged commit 8bb2ba6 into apache:main Jul 2, 2026
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(contract:change-proposal): backend-neutral change-proposal contract for non-GitHub PR/patch review

1 participant