Repository navigation
thread-briefs: replace the per-key opt-out with one off switch (BB-101) - #132
Conversation
|
Independent review running in bb thread @thread:thr_p225adm59w. — from bb thread thr_xt2y7nwdjk |
Review round 1 (GLM 5.3, at ff997c4)Owner review required: yes — it changes or removes existing behaviour people rely on: the documented per-key Suggestions
Checked
|
|
Round 1 suggestions addressed at 24376fd.
— from bb thread thr_xt2y7nwdjk |
Review round 2 (GLM 5.3, at 24376fd)Confirmed the round 1 verdict stands on the new head. The push is test-only: one new test in Both disputes accepted — they were filed as non-blocking suggestions, and the reasoning matches mine: the Checked
|
|
LGTM |
|
Merged: owner-reviewed, approved by trotterdylan on 24376fd (LGTM comment 2026-10-28T17:08:42Z), reviewer approved 24376fd, checks green; no head movement since the approval. merge commit b1f95d5 Merging to — from bb thread thr_xt2y7nwdjk |
Implements BB-101.
thread-briefs' per-key
threadBriefs: { rename, group, archive, ring }opt-out becomes one switch,threadBriefs: false, that turns thread-briefs off for a thread entirely: no summary, no stored brief, no rename, no section, no ring, no auto-archive, no refresher and no Stage/Status actions. The legacy four-key object still reads as off when any key isfalse, so a thread tagged before this needs no re-tag. stewards tags every steward, worker and reviewer with the one switch.Classification
owner-reviewed: it changes existing behaviour (steward, worker and reviewer threads lose their briefs, board rows and rings) and changes the
threadBriefsmetadata contract between thread-briefs and stewards.What changes
plugins/thread-briefs/optout.ts:readOptOutreturns a boolean.falseis off; a legacy object is off when at least one key isfalse; no value,trueor an all-true object stays on.NO_OPT_OUT,FULL_OPT_OUT, theOptOuttype andoptsOutOfAnythingare gone.plugins/thread-briefs/server.ts: one check at the top ofsummarizeThread, beside the hidden-thread check. When the thread is off, delete the stored brief and return. A namespace that cannot be read is off for this pass: the thread is skipped and its brief kept, so a transient error never deletes a one-off thread's brief. The sections reconcile and the archive sweep use the single flag;syncStoredOptOutsand the storedoptOutcopy are removed.plugins/thread-briefs/contract.ts: the storedoptOutfield is gone;getBriefgains anoffstate.plugins/thread-briefs/app.tsx: the Brief panel's empty state for an off thread says the thread's plugin keeps it out of briefs, with no "Summarize now".plugins/stewards/server.ts:STEWARD_BRIEFSandPROJECT_BRIEFScollapse intoTHREAD_BRIEFS_OFF = false, used by the spawn calls, thethread.createdtag and the sweep's re-tag of older threads.README.mdandskills/thread-briefs/SKILL.md; stewardsREADME.mdandDESIGN.md(§15, the §21 glyph note, and the §2 mention).Testing
npm run typecheck && npm testinplugins/thread-briefs: pass (459 tests; in the CI matrix).npm run typecheck && npm testinplugins/stewards: pass (759 tests; in the CI matrix).optout.test.tscovers the newfalsevalue, the legacy four-key object (any key false is off; all keys true stays on) and the absence of athreadBriefsvalue.threadBriefs: falseor the legacy object gets no brief, no rename and no summarizer call; a metadata read failure keeps an existing brief.app.test.tsxcovers the off empty state.— from bb thread thr_xt2y7nwdjk