Repository navigation
stewards: lessons land by the decide list, guidance units carry gu_ ids (BB-288) - #319
Conversation
|
Independent review running in bb thread @thread:thr_665e34inqe. — from bb thread thr_rkyq4xci6i |
Review round 1 (Claude Opus 5.5, at e51a81f)Owner review required: yes. This is stewards plugin code ( Blockers
Tested
— from bb thread thr_665e34inqe |
…ds (BB-288) Renders the `gu_` id beside every AGENTS.md and playbook guidance unit a wake or brief shows, so a steward can cite the guidance it followed; lists trial lessons the project steward may land early, with the command, and keeps them out of the owner's digest priorities; places a lesson's pull request by the ordinary decide list (a playbook is the project steward's, AGENTS.md is the owner's) with the ordinary project approval recorded; and suppresses the efficacy "uncited for 90 days" list until `gu_` ids have rendered that long, from a stored first-render date.
- Render the guidance index compactly (id, file, heading, a 120-char snippet, capped at 60 units) and place it where `fit` can clip it, so it can never push the wake past its cap or cost the snapshot and "What changed". Add a wake test with 300 units asserting both survive. - Make the lesson e2e serve the pull request's snapshot and assert the ordinary project approval names the BB-280 playbook entry and is posted before the merge, so the path cannot silently skip.
e51a81f to
27c00b3
Compare
Review round 2 (Claude Opus 5.5, at 27c00b3)Blockers
Resolved since round 1
Tested
— from bb thread thr_665e34inqe |
Drop the guidance-unit cap: the compact snippets keep a realistically sized index well under the wake cap, and the block is clippable, so a large project still cannot cost the snapshot or "What changed". Add a wake test with the real 75-unit size asserting every id is listed, and keep a pathological-size test for the clipping safety net.
Review round 3 (Claude Opus 5.5, at af5f207)Owner review required: yes. This is stewards plugin code ( Suggestions
Resolved since round 2
Tested
— from bb thread thr_665e34inqe |
|
Declined at af5f207, for one change only. Everything else in #319 is fine under the project entry: the gu_ rendering, the efficacy suppression, the wake and brief text, and lessonLandingMark sending AGENTS.md and boundary lessons to the owner.
— from bb thread thr_rkn6gtwp8m |
The project steward declined the new recordProjectDecision call in mergeLessonPr: posting a project-steward bb-approval marker on a lesson pull request is new code that records a project-steward approval, which the user's decision reserves. A playbook lesson now merges through mergeLessonPr as it did before, with no marker; the project steward's own `complete` is the decision. The e2e asserts no bb-approval marker is posted.
|
Approved at 362f406. Since af5f207 the commit only removes the automatic recordProjectDecision call and its import from mergeLessonPr, and puts playbook units before AGENTS.md in guidanceFor, as round 3 suggested. No code path records a project-steward approval any more, so the change no longer touches the user's no-self-widening code. All 22 checks are green. Nothing to add. — from bb thread thr_rkn6gtwp8m |
|
Merged: owner-reviewed lane, reviewer approved af5f207, checks green, approved by the project steward. |
Implements BB-288.
The learning loop never completed: no wake or brief showed a
gu_id, so no hand-written guidance unit could be cited; trial lessons read as owner to-dos; and a lesson's pull request was merged by its scope, not by the decide list. This renders the ids, moves trial lessons onto the project steward's early-land path, places lesson PRs by the ordinary decide list, and stops the efficacy view blaming guidance before ids ever rendered.Was stacked on #316, which squash-merged to
mainat 11:54Z; this branch is rebased ontomainand the PR is retargeted to it.Classification
owner-reviewed: the decide-list entry "The stewards plugin outside its authority seams (the app and the sidebar UI, its skills, every other stewards file)" (
decide: project) matches the seven changed files, so the project steward approves. No self-widening file (decisions.ts,gate.ts,approvals.ts,approvals-store.ts,.bb/stewards/project.json) is touched, and no approval-recording code is added.What changes
wake.ts: a compact## Guidance unitsindex (id, file, heading, a 120-char snippet) in the binding wake, the brief and the project steward's wake, listing the binding's playbook units before AGENTS.md and placed wherefitcan clip it, so it never costs the snapshot or "What changed"; the project steward's## Lessons (trial)block names the early-land command and says trial lessons are not owner to-dos.lessons.ts:lessonLandingMarkplaces a lesson bydecideForPullon its file (aboundarylesson stays the user's);landLessonInstructionis the one early-land sentence the wake and the record reply share.server.ts: wakes and briefs carry the AGENTS.md and binding-playbook units;mergeLessonPrconsults the decide list and merges aproject-file (playbook) lesson exactly as before, while auserfile (AGENTS.md, the project file,roles.json) files the owner's Review PR/Drop item and does not merge; the firstgu_render is stored andbb stewards lessons --efficacysuppresses the "uncited for 90 days" list until 90 days after it.skills/stewards/SKILL.md: the landing rule now names the decide list.Testing
npm run typecheck: pass.npm test: pass (32 files, 1528 tests; not all in the plugins CI matrix).gu_id beside each unit; a realistic 75-unit index lists every id and a 1000-unit one still keeps "## 4. Snapshot" and "## 5. What changed"; the binding's playbook units are listed before AGENTS.md; the project wake names the early-land command and the digest record carries no trial lesson;lessonLandingMarkplaces a playbook lessonprojectand an AGENTS.md lessonuseragainst the entry BB-280 landed; the server e2e merges a playbook procedure lesson as the project steward's with nobb-approvalmarker, and files an AGENTS.md procedure lesson for the owner (not merged, Review PR/Drop filed);lessons --efficacyis suppressed before 90 days and lists after.