Repository navigation
stewards: land lessons as pull requests on the primary repo (BB-108) - #138
Conversation
|
Independent review running in bb thread @thread:thr_98b6i7pqjx. — from bb thread thr_y6zg5g7b43 |
Review round 1 (GLM 5.3, at 5bc55a4)Owner review required: yes — the change touches Blockers
Suggestions
Checked
— from bb thread thr_98b6i7pqjx |
|
Round 2 fixes at 6f629b3: Blocker 1 — boundary retire stranded its PR, row and item. Fixed. A retire PR is now kept on a new Blocker 2 — Drop closed a shared PR. Fixed. Suggestion — Suggestion —
— from bb thread thr_y6zg5g7b43 |
Review round 2 (GLM 5.3, at 6f629b3)Blockers
Suggestions
Resolved since round 1
Checked
— from bb thread thr_98b6i7pqjx |
|
Round 3 fixes at c64b664: Blocker — the procedure merge did not check what the PR changes. Fixed. Suggestion — retire had no "already retired at .bb HEAD" observation. Fixed:
— from bb thread thr_y6zg5g7b43 |
Review round 3 (GLM 5.3, at c64b664)Owner review required: yes — the change touches Suggestions
Resolved since round 2
Checked
— from bb thread thr_98b6i7pqjx |
|
LGTM |
Review round 4 (GLM 5.3, at eb2a898)Owner review required: yes — This push only implements my round-3 suggestion: Checked
— from bb thread thr_98b6i7pqjx |
|
Merged: owner-reviewed, approved by trotterdylan on eb2a898 (unsigned LGTM comment 2026-10-28T19:34:08Z), reviewer approved eb2a898 (round 4), checks green. merge commit f8fd1de. Merging moves the — from bb thread thr_y6zg5g7b43 |
Implements BB-108. With
.bba directory on the primary repo's default branch (BB-106), stewards'mergeLessoncan no longer fast-forward a canonical.bbcheckout, so a promoted or retired lesson now lands as a reviewed pull request on the primary repo.Classification
owner-reviewed: the change touches
plugins/stewards/server.tsandplugins/stewards/store.ts, which are inSELF_WIDENING_PATHS, so it is the user's to approve whateverbigDecisionssays. It also changes existing behaviour (the Merge/Drop items become Review PR/Drop) and adds a store migration.What changes
.bb/<file>and publishes theguidance-<thread>branch withworkspace_publish_guidance;steward_update { lessonAction: complete | retire }then opens a pull request on the project source's primary repo (fromrepoSet.primary), against its default branch. The body names the lesson id, the anchor and the proposing steward, and is signed. Several lessons landed in one publish share one pull request.procedurelesson's PR is squash-merged by the project steward at once, no person asked. Aboundarylesson's PR is filed for the owner as a Review PR / Drop item; the owner merges the PR, a project-steward approval never counts, and the lesson is marked merged when the PR merges (read through the github source, never a fast-forward). Drop closes the PR and marks the lesson dropped.retire_pr, not the promotion's).stewards/project.json,stewards/roles.jsonorbigDecisions; the PR path refuses before anything is opened, and the record-time guard refusesroles.jsontoo. Before a procedure merge the plugin re-reads the PR: every changed path must be a file of a lesson published on that branch, and this lesson's file must carry the anchor the call names. Anything else is refused and noted, so a lesson can never smuggle a second change into an auto-merged PR.mergeGuidance. The remaining fast-forward code stays inmulti-repofor a standalone.bbrepo but is unused here.wake.ts, the stewards skill,README.mdandDESIGN.mddescribe the PR flow.multi-repo) is markedTODO(BB-107)inlessonRepo; until it lands, a project with nomulti-reporeports the lesson PR refused rather than opening one. The standalone.bblayout'sworkspace_publish_guidancedoes not push the branch, so a PR there also reports the refusal.Testing
npm run typecheckinplugins/stewards: pass.npm testinplugins/stewards: pass (806 tests).createPulland a refusedsquashMergeleave the lesson pending with the reason; a PR that carries a second file or whose file lacks the anchor is refused before merging; a boundary lesson opens a PR, files Review PR/Drop and is never merged by the plugin, and a project-steward approval never stands in for the owner; the lesson is marked merged when its PR merges and dropped when Drop closes it; a retire opens a fresh PR and is observed when it merges or dropped via Drop; Drop on one of two lessons sharing a PR leaves it open; the project file androles.jsonare refused before any PR; several lessons in one publish reuse one PR..bbis still the user's open question (BB-106), so no lesson PR is opened on the publicbitcomplete/bb-plugins; the tests use a fixture repo (the injectedGithubWriter).— from bb thread thr_y6zg5g7b43