Skip to content

ci(asf.yaml): stop blocking merge on unresolved review threads - #1155

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:fix/asf-yaml-unblock-threads
Sep 7, 2026
Merged

ci(asf.yaml): stop blocking merge on unresolved review threads#1155
potiuk merged 1 commit into
apache:mainfrom
potiuk:fix/asf-yaml-unblock-threads

Conversation

@potiuk

@potiuk potiuk commented Sep 7, 2026

Copy link
Copy Markdown
Member

Summary

  • required_conversation_resolution: true made any open review thread a hard merge gate. With the approval requirement currently lifted, it was the one gate a reviewer could trip by accident.
  • The failure mode is specific and was hit repeatedly during a review pass over chore(deps): bump the github-actions group with 3 updates #1141feat(skill-evals): add the issue-reassess eval suite #1145: a reviewer leaves a nit they explicitly mark non-blocking, the PR becomes unmergeable, and the reviewer resolves their own advisory comment purely to unblock the merge. That destroys the signal — an unresolved thread should mean "the author hasn't looked at this yet", not "the merge button is stuck".
  • Unresolved threads stay visible in the PR UI; they are simply no longer a hard gate. zizmor / prek / tests-ok and required_linear_history are untouched, so nothing merges without green CI.

Not included: Actions workflow approval

The other half of the request — stop requiring maintainer approval for contributors' workflow runs — cannot be expressed in .asf.yaml. I checked the asfyaml implementation rather than guessing: asfyaml/feature/github/ has modules for branch protection, rulesets, merge buttons, collaborators, pull requests, protected tags, pages, environments and Copilot review — but no Actions module, and no actions / fork / approval keys anywhere in the feature set.

That setting lives in GitHub's Settings → Actions → General → Fork pull request workflows from outside collaborators. It needs either a repo admin or an ASF Infra (JIRA) request. Worth noting potiuk currently has push/triage but not admin or maintain on this repo, so it needs Infra.

Empirically the repo is on "Require approval for all outside collaborators" rather than the first-time-contributor default: AmirF194 is a returning CONTRIBUTOR with three open PRs and every run is still gated. Moving it to "Require approval for first-time contributors" would unblock the recurring contributors while keeping the guard for brand-new accounts.

Type of change

  • CI / dev loop (prek, workflows, validators)

Test plan

  • YAML parses; no other key touched (single-key diff plus its comment block).
  • prek passes on the changed file.
  • Verified against the asfyaml source that required_conversation_resolution is a supported protected_branches key (asfyaml/feature/github/branch_protection.py:140), so this lands rather than being silently ignored.
  • ASF Infra reconciles protected_branches within a few minutes of merge to main.

Linked issues

Follow-up to the review pass on #1141, #1144, #1145, #1143, #1142.

`required_conversation_resolution: true` made *any* open review thread a
hard merge gate. With the approval requirement currently lifted (see the
note above `protected_branches`), it was the one gate a reviewer could
trip by accident.

The failure mode is specific: a reviewer leaves a nit they explicitly
mark non-blocking, the PR is then unmergeable until someone resolves it,
and the reviewer ends up resolving their own advisory comment purely to
unblock the merge. That destroys the signal the comment was meant to
carry — an unresolved thread should mean "the author has not looked at
this yet", not "the merge button is stuck".

Unresolved threads stay visible in the PR UI; they are simply no longer
a hard gate. The `zizmor` / `prek` / `tests-ok` status checks and linear
history are untouched, so nothing merges without green CI.

Restore alongside `required_pull_request_reviews` if the project later
wants threads to gate merge again.

Generated-by: Claude Code (Opus 5)
@potiuk
potiuk merged commit 2b14842 into apache:main Sep 7, 2026
9 checks passed
potiuk added a commit that referenced this pull request Sep 8, 2026
The marker sat at a1cff44, 17 commits behind main. Bumping it alone
would claim those commits are described by the specs, so the drift is
closed first.

Specs updated for what actually shipped:

- meta-and-quality-tooling: skill-evals errors, rather than passing, when
  a case's CLI produced no gradeable output (#1161).
- security-reporting: the tracker dashboard projects the current partial
  bucket to its end-of-bucket value, splitting RATE series (accumulate
  from zero) from LEVEL series (carry over), and deliberately not
  projecting mean-based signals (#1158).
- project-agnosticism: <PROJECT> and <project> are two placeholders
  holding different values, and the lint carries both spellings plus
  spaced variants (#1154).
- adapters: the forwarder relay's contact_handle defaults to an
  org-level shared inbox rather than a named individual (#1135). The
  multi-hop coordinator case is designed in RFC-AI-0008 and unimplemented.
- issue-management-family: the family's eval suites, and the note that
  --cli runs belong outside a credential-denying sandbox (#1145).

Commits needing no spec change: #1152, #1143 and #1156 updated their own
specs in-commit; #1149, #1147, #1151 are behaviour-preserving bug fixes;
#1155 and #1141 are CI and dependency chores; #1159's spec edits landed
with it; #1144 removes hardcoded literals that no spec asserted.

One genuine gap recorded rather than papered over: no spec covers
marketplace distribution or the dev-version stamping rule from #1160,
which is load-bearing because `claude plugin update` compares version
strings, not commit SHAs. Logged in adoption-and-setup as wanting its own
spec.

Generated-by: Claude Code (Opus 5)
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.

1 participant