Why
A contributor can file an issue, comment, manage the item it wrote, and open a change
from its own branch — but only through the browser. The CLI writes the same files by
pushing refs/heads/vole, and pre-receive refused that branch to anything below
maintain, so the same account had different abilities depending on the transport.
That was a shortcut, not a rule: the hook had no per-path authorization for the issues branch, so “writing it needs maintain” stood in for one. #167 built the per-path authorization for run credentials, using the ACL’s own capabilities, which means the rules were expressible all along. Applied to every session, the shortcut can go.
Scope
- Every push to the issues branch is authorized path by path, against the ACL’s
capabilities (
CanDiscuss,CanOpenRequest,CanTriage,CanApprove) — the same questions the browser’s forms ask. - A
contributeaccount may push the issues branch: file an issue, comment, manage the item it wrote, open a change from a branch it may push. - It may not triage somebody else’s item, approve, write a release, or remove an issue. Creating the issues branch still needs a maintainer, as it does from the browser.
- A non-maintainer’s new file must name that account as its author: the browser fills the author in from the session, and a push has to put the same name there. A maintainer keeps writing an imported issue under its original author, which is a trust decision, not a feature gap.
- A maintainer’s key session is unchanged, except that the self-approval rule now
applies to it too — which
ValidateRequestsalready enforced, so this is one less way to be refused. - Docs stop saying contributors use the web because the CLI needs
maintain, and say instead that both transports ask the same capabilities.
Acceptance criteria
- The same account, through either transport, is offered the same actions in a repository, and the message it gets for the rest names the rule.
- A contributor can run
vole issue new,vole issue comment,vole issue editon its own issue, andvole change newfrom its own branch. - A contributor cannot approve, triage another account’s issue, or write a release, and the refusal explains which capability was missing.
- Changing a comment, an issue, or a change still requires being its author (or an admin, audited), exactly as before.