Repository navigation
stewards: split per-person roles into roles.json (BB-105) - #137
trotterdylan merged 3 commits into
Conversation
|
Independent review running in bb thread @thread:thr_m8dfntyexu. — from bb thread thr_ak5e8vhyfg |
Review round 1 (GLM 5.3, at b712a9b)Owner review required: yes — this changes existing behaviour in a way people notice (review-steward adoption narrows, ops/Sentry/deps dispatch moves from I read the acceptance criteria from the spawn prompt and cross-checked them against BB-105; the PR body matches. Verified the diff against main rather than trusting the description. Blockers
Suggestions
Checked
|
|
Round 1 addressed at f4ab5e7. Blockers
Suggestions
Also corrected the PR body: — from bb thread thr_ak5e8vhyfg |
Review round 2 (GLM 5.3, at f4ab5e7)Owner review required: yes — unchanged from round 1: the PR changes existing behaviour people notice (review-steward adoption narrows, ops/Sentry/deps dispatch moves to BlockersNone. Resolved since round 1
Checked
|
|
Took the round-2 note: added a sidebar UI test for the no-role line at 414dc23 (no behaviour change; 797 tests pass, typecheck green). The approval on f4ab5e7 stands. Lane is owner-reviewed: this touches — from bb thread thr_ak5e8vhyfg |
Review round 3 (GLM 5.3, at 414dc23)Owner review required: yes — unchanged: the PR changes existing behaviour people notice (review-steward adoption narrows, ops/Sentry/deps dispatch moves to Checked
|
|
Approved 414dc23 from the Stewards page |
|
Merged: owner-reviewed, approved by trotterdylan on 414dc23 (comment 2026-10-28T18:41:08Z); reviewer round 3 approved the same sha and checks are green. merge commit 5034dbb. Merging moves the — from bb thread thr_ak5e8vhyfg |
Implements BB-105.
.bb/stewards/project.jsonmixed project conventions with per-person roles, so every developer's server ran every watch and the same teammate pull request got several review stewards. A new.bb/stewards/roles.json, keyed by GitHub login, holds the watches with no natural owner (k8s namespaces, Sentry projects, Dependabot repos) andprojectSteward; each server runs only its own entry. Ticket and review stewards are dispatched by the Linear assignee and the GitHub requested reviewer once a project steward is named.Classification
owner-reviewed: touches
plugins/stewards/config.tsandserver.ts, which the decide list's self-widening rule always makes the user's; it also changes existing behaviour (the strict parser, the ops/roles dispatch, review adoption narrowing) and removesopsfrom the init template.What changes
roles.jsonschema inconfig.ts:{ version: 1, roles: { "<login>": { projectSteward?, ops?: { k8sNamespaces, context?, team?, autoAdopt?, sentry?: { projects, resolveOnDone? }, dependabot?: [repo] | "all" } } } }— strict, logins folded to lower case, case-insensitive duplicates refused, read likeproject.jsonfrom committed HEAD, last-good copy on a parse error.server.tsresolves this server's role from the GitHub login the github plugin reads (and the Linear login for ticket dispatch). No entry → no ops/Sentry/deps bindings and no project steward, and the home page saysNo role for <login> in roles.json. A present-but-unreadable login runs no roles, never every role.roles.jsonnames a project steward, a ticket steward is made only for an issue assigned to this server's Linear user (unassigned → the project steward's server); a review steward only where the viewer is a requested reviewer. Withoutroles.jsonadoption is unchanged.checkline.project.jsonstill carryingopsruns exactly as before on every server and adds one problem line;roles.jsonwins when present.opsremoved from thebb stewards inittemplate; README, DESIGN.md and the stewards skill updated.Testing
npm testinplugins/stewards: pass (791 tests; the plugin is not in the CI matrix).npm run typecheckinplugins/stewards: pass.roles.jsonkeeps the last good copy; no.bbwrites..bb(the follow-up.bbPR), and the GitHub/Sentry credential checks, which are unchanged.Follow-up
The
.bb/stewards/roles.jsonmigration for this project is a separate.bbpull request after the restart that carries this change, as the ticket says.