Skip to content

Pair by branch name, document the agent workflow, and skip insider triage - #55

Merged
DerekCorniello merged 8 commits into
mainfrom
docs/ci-pairing-and-agent-workflow
Aug 24, 2026
Merged

Pair by branch name, document the agent workflow, and skip insider triage#55
DerekCorniello merged 8 commits into
mainfrom
docs/ci-pairing-and-agent-workflow

Conversation

@DerekCorniello

Copy link
Copy Markdown
Contributor

Three related changes: how cross-repo work is coordinated, how it gets filed, and who has to triage it.

Closes #19. Closes #28.

Pairing by branch name

A change spanning repos is developed on a branch of the same name in each, and cross-repo jobs look for that branch, falling back to main. Nothing to label, create, or clean up.

This replaces paired-<repo>:<branch> labels, which were metadata rather than content:

  • did not travel with the commit or appear in the diff
  • did not exist on a push, which is why mux-runtime main went red during 0.10.0
  • needed creating before they could be applied
  • only took effect if you remembered to close and reopen the PR - labelling does not start a run, and re-running replays the original payload

Implementation in muxlang/mux-runtime (scripts/paired-ref.sh).

What gates, and what only reports

A consumer builds the sibling commit its lockfile names. A job that builds the sibling's branch source is therefore a preview of a state that does not exist yet, and on a deliberately breaking change its failure is expected information, not a defect. Blocking on it produced red PRs for merge-order reasons.

Those jobs now report. The gate is the pin-bump PR - the first build that actually contains the change, running the consumer's full suite.

Filing an issue and running a PR (#28)

The doc said what the metadata means but never how to actually file and land work. New section covers: picking the template rather than prefixing the title, leaving labels and milestones alone at filing time, what a good title says, merge order for a coupled change, changelog in the same PR, and that a red check is a claim about your change until you have shown otherwise.

Insider triage (#19)

needs triage marks work needing a maintainer's judgement. An org member files with priority and status in hand, so the label only asked them to review their own issue. The template applies it before the workflow runs, so it is removed again rather than not added.

Identical workflow change in all seven repos; this PR carries mux-context's copy.

On "add issue types back"

Both repository.issueTypes and organization.issueTypes return empty, so there is nothing configured to restore - it may be a plan limitation or they were never enabled. Left alone rather than guessed at; say what you had in mind and I will follow up.

…iage

Three related changes to how cross-repo work is coordinated and filed.

Pairing a change that spans repos is now a branch of the same name in each,
replacing paired-<repo>:<branch> labels. A label is metadata: it did not
travel with the commit, did not show in the diff, did not exist on a push -
which is why mux-runtime main went red during 0.10.0 - and only took effect
if you closed and reopened the PR, because labelling does not start a run and
a re-run replays the original payload.

A job that builds a sibling's branch source is a preview of a state that does
not exist yet, since the consumer builds the commit its lockfile names. On a
deliberately breaking change its failure is expected information rather than
a defect. Those jobs report; the pin-bump PR gates, because it is the first
build that actually contains the change.

The governance doc gains the part it never had: how to file an issue and run
a PR. Which template, why not to touch labels or milestones at filing time,
what a title should say, merge order for a coupled change, and that a red
check is a claim about your change until you have shown otherwise. That gap
is what mux-context#28 was about.

Also carries the triage workflow change so this repo matches the other six.

Closes #19
Closes #28
@greptile-apps

greptile-apps Bot commented Aug 21, 2026

Copy link
Copy Markdown

Greptile Summary

The PR moves issue-kind metadata from labels to issue types, exempts repository writers and administrators from the triage label, and documents branch-based cross-repository coordination.

  • Adds the Decision type to the cross-repository and ADR issue forms.
  • Uses repository permission checks to determine whether needs triage should be removed.
  • Aligns governance guidance with issue types, the filing workflow, branch-name pairing, and pin-bump merge gates.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/ISSUE_TEMPLATE/adr_proposal.yml Adds the Decision issue type and restores the ADR area label.
.github/ISSUE_TEMPLATE/cross_repo_question.yml Assigns the Decision issue type to cross-repository questions.
.github/workflows/issue-triage.yml Replaces association-based triage exemption with fail-safe repository permission checks and removes obsolete documentation-kind labeling.
docs/repo-governance.md Documents issue-type governance, insider triage handling, issue and PR procedures, branch-name pairing, and pin-bump gating.

Reviews (8): Last reviewed commit: "Clarify that exempt issues skip no proje..." | Re-trigger Greptile

Comment thread .github/workflows/issue-triage.yml Outdated
Comment thread docs/repo-governance.md Outdated
Kind was inferred from which form was used, then re-encoded as a label at
triage - two representations of one fact, and neither visible in an issue
list. It is an org issue type now: Bug, Enhancement, Documentation, Chore,
Decision, set by the template at filing time.

Types and labels answer different questions, which is why both stay. A type
is single-select, so there is no filing something as both a bug and a
feature. Labels carry what a single field cannot: area, state, disposition.
The rule is one type, any number of labels, and no label that restates the
type.

Closes #19
Comment thread docs/repo-governance.md Outdated
Comment thread docs/repo-governance.md
COLLABORATOR in author_association only means invited to this repo, which
can be read-only or triage-level. It does not imply the ability to set
priority and status, so removing 'needs triage' for one drops their issue out
of the queue - the single outcome this must not cause.

Leaving the label on someone who could have triaged it costs a maintainer one
click. The reverse loses the issue. OWNER and MEMBER only.

Caught in review.
@DerekCorniello

Copy link
Copy Markdown
Contributor Author

Updated: COLLABORATOR no longer counts as an insider.

It only means invited to this repo, which can be read-only or triage-level, so it does not imply the ability to set priority and status. Removing needs triage for one would drop their issue out of the queue - the single outcome this must not cause. Leaving the label on someone who could have triaged it costs a maintainer one click; the reverse loses the issue. OWNER and MEMBER only.

The template-sync branches were also rebuilt from main: they had been branched off the triage branch, so each carried both changes. They now contain only the template edits.

The workflow guessed a 'documentation' label from the title and body. With
Documentation as an issue type set by the form, that label restates the type,
which is exactly what the governance doc now forbids.

The guess was weak anyway: it could not tell a docs REQUEST from a bug report
that happens to mention documentation.

Caught in review.
Comment thread docs/repo-governance.md
@sonarqubecloud

Copy link
Copy Markdown

@DerekCorniello
DerekCorniello merged commit a7f2362 into main Aug 24, 2026
4 checks passed
@DerekCorniello
DerekCorniello deleted the docs/ci-pairing-and-agent-workflow branch August 24, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant